1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC 3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=atom | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM 4 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=slm | FileCheck %s --check-prefix=CHECK --check-prefix=SLM 5 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY 6 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY 7 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL 8 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL 9 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE 10 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX 11 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=btver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2 12 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1 13 14 define void @test_adc_8(i8 %a0, i8* %a1, i8 %a2) optsize { 15 ; GENERIC-LABEL: test_adc_8: 16 ; GENERIC: # %bb.0: 17 ; GENERIC-NEXT: #APP 18 ; GENERIC-NEXT: adcb $7, %al # sched: [2:0.67] 19 ; GENERIC-NEXT: adcb $7, %dil # sched: [2:0.67] 20 ; GENERIC-NEXT: adcb $7, (%rsi) # sched: [9:1.00] 21 ; GENERIC-NEXT: adcb %dl, %dil # sched: [2:0.67] 22 ; GENERIC-NEXT: adcb %dil, (%rsi) # sched: [9:1.00] 23 ; GENERIC-NEXT: adcb (%rsi), %dil # sched: [7:0.67] 24 ; GENERIC-NEXT: #NO_APP 25 ; GENERIC-NEXT: retq # sched: [1:1.00] 26 ; 27 ; ATOM-LABEL: test_adc_8: 28 ; ATOM: # %bb.0: 29 ; ATOM-NEXT: #APP 30 ; ATOM-NEXT: adcb $7, %al # sched: [1:0.50] 31 ; ATOM-NEXT: adcb $7, %dil # sched: [1:0.50] 32 ; ATOM-NEXT: adcb $7, (%rsi) # sched: [1:1.00] 33 ; ATOM-NEXT: adcb %dl, %dil # sched: [1:0.50] 34 ; ATOM-NEXT: adcb %dil, (%rsi) # sched: [1:1.00] 35 ; ATOM-NEXT: adcb (%rsi), %dil # sched: [1:1.00] 36 ; ATOM-NEXT: #NO_APP 37 ; ATOM-NEXT: retq # sched: [79:39.50] 38 ; 39 ; SLM-LABEL: test_adc_8: 40 ; SLM: # %bb.0: 41 ; SLM-NEXT: #APP 42 ; SLM-NEXT: adcb $7, %al # sched: [1:0.50] 43 ; SLM-NEXT: adcb $7, %dil # sched: [1:0.50] 44 ; SLM-NEXT: adcb $7, (%rsi) # sched: [5:2.00] 45 ; SLM-NEXT: adcb %dl, %dil # sched: [1:0.50] 46 ; SLM-NEXT: adcb %dil, (%rsi) # sched: [5:2.00] 47 ; SLM-NEXT: adcb (%rsi), %dil # sched: [4:1.00] 48 ; SLM-NEXT: #NO_APP 49 ; SLM-NEXT: retq # sched: [4:1.00] 50 ; 51 ; SANDY-LABEL: test_adc_8: 52 ; SANDY: # %bb.0: 53 ; SANDY-NEXT: #APP 54 ; SANDY-NEXT: adcb $7, %al # sched: [2:0.67] 55 ; SANDY-NEXT: adcb $7, %dil # sched: [2:0.67] 56 ; SANDY-NEXT: adcb $7, (%rsi) # sched: [9:1.00] 57 ; SANDY-NEXT: adcb %dl, %dil # sched: [2:0.67] 58 ; SANDY-NEXT: adcb %dil, (%rsi) # sched: [9:1.00] 59 ; SANDY-NEXT: adcb (%rsi), %dil # sched: [7:0.67] 60 ; SANDY-NEXT: #NO_APP 61 ; SANDY-NEXT: retq # sched: [1:1.00] 62 ; 63 ; HASWELL-LABEL: test_adc_8: 64 ; HASWELL: # %bb.0: 65 ; HASWELL-NEXT: #APP 66 ; HASWELL-NEXT: adcb $7, %al # sched: [2:0.50] 67 ; HASWELL-NEXT: adcb $7, %dil # sched: [2:0.50] 68 ; HASWELL-NEXT: adcb $7, (%rsi) # sched: [9:1.00] 69 ; HASWELL-NEXT: adcb %dl, %dil # sched: [2:0.50] 70 ; HASWELL-NEXT: adcb %dil, (%rsi) # sched: [9:1.00] 71 ; HASWELL-NEXT: adcb (%rsi), %dil # sched: [7:0.50] 72 ; HASWELL-NEXT: #NO_APP 73 ; HASWELL-NEXT: retq # sched: [7:1.00] 74 ; 75 ; BROADWELL-LABEL: test_adc_8: 76 ; BROADWELL: # %bb.0: 77 ; BROADWELL-NEXT: #APP 78 ; BROADWELL-NEXT: adcb $7, %al # sched: [2:0.50] 79 ; BROADWELL-NEXT: adcb $7, %dil # sched: [2:0.50] 80 ; BROADWELL-NEXT: adcb $7, (%rsi) # sched: [8:1.00] 81 ; BROADWELL-NEXT: adcb %dl, %dil # sched: [1:0.50] 82 ; BROADWELL-NEXT: adcb %dil, (%rsi) # sched: [8:1.00] 83 ; BROADWELL-NEXT: adcb (%rsi), %dil # sched: [6:0.50] 84 ; BROADWELL-NEXT: #NO_APP 85 ; BROADWELL-NEXT: retq # sched: [7:1.00] 86 ; 87 ; SKYLAKE-LABEL: test_adc_8: 88 ; SKYLAKE: # %bb.0: 89 ; SKYLAKE-NEXT: #APP 90 ; SKYLAKE-NEXT: adcb $7, %al # sched: [2:0.50] 91 ; SKYLAKE-NEXT: adcb $7, %dil # sched: [2:0.50] 92 ; SKYLAKE-NEXT: adcb $7, (%rsi) # sched: [8:1.00] 93 ; SKYLAKE-NEXT: adcb %dl, %dil # sched: [1:0.50] 94 ; SKYLAKE-NEXT: adcb %dil, (%rsi) # sched: [8:1.00] 95 ; SKYLAKE-NEXT: adcb (%rsi), %dil # sched: [6:0.50] 96 ; SKYLAKE-NEXT: #NO_APP 97 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 98 ; 99 ; SKX-LABEL: test_adc_8: 100 ; SKX: # %bb.0: 101 ; SKX-NEXT: #APP 102 ; SKX-NEXT: adcb $7, %al # sched: [2:0.50] 103 ; SKX-NEXT: adcb $7, %dil # sched: [2:0.50] 104 ; SKX-NEXT: adcb $7, (%rsi) # sched: [8:1.00] 105 ; SKX-NEXT: adcb %dl, %dil # sched: [1:0.50] 106 ; SKX-NEXT: adcb %dil, (%rsi) # sched: [8:1.00] 107 ; SKX-NEXT: adcb (%rsi), %dil # sched: [6:0.50] 108 ; SKX-NEXT: #NO_APP 109 ; SKX-NEXT: retq # sched: [7:1.00] 110 ; 111 ; BTVER2-LABEL: test_adc_8: 112 ; BTVER2: # %bb.0: 113 ; BTVER2-NEXT: #APP 114 ; BTVER2-NEXT: adcb $7, %al # sched: [1:1.00] 115 ; BTVER2-NEXT: adcb $7, %dil # sched: [1:1.00] 116 ; BTVER2-NEXT: adcb $7, (%rsi) # sched: [5:1.00] 117 ; BTVER2-NEXT: adcb %dl, %dil # sched: [1:1.00] 118 ; BTVER2-NEXT: adcb %dil, (%rsi) # sched: [5:1.00] 119 ; BTVER2-NEXT: adcb (%rsi), %dil # sched: [4:1.00] 120 ; BTVER2-NEXT: #NO_APP 121 ; BTVER2-NEXT: retq # sched: [4:1.00] 122 ; 123 ; ZNVER1-LABEL: test_adc_8: 124 ; ZNVER1: # %bb.0: 125 ; ZNVER1-NEXT: #APP 126 ; ZNVER1-NEXT: adcb $7, %al # sched: [1:0.25] 127 ; ZNVER1-NEXT: adcb $7, %dil # sched: [1:0.25] 128 ; ZNVER1-NEXT: adcb $7, (%rsi) # sched: [5:0.50] 129 ; ZNVER1-NEXT: adcb %dl, %dil # sched: [1:0.25] 130 ; ZNVER1-NEXT: adcb %dil, (%rsi) # sched: [5:0.50] 131 ; ZNVER1-NEXT: adcb (%rsi), %dil # sched: [5:0.50] 132 ; ZNVER1-NEXT: #NO_APP 133 ; ZNVER1-NEXT: retq # sched: [1:0.50] 134 tail call void asm "adcb $3, %AL \0A\09 adcb $3, $0 \0A\09 adcb $3, $2 \0A\09 adcb $1, $0 \0A\09 adcb $0, $2 \0A\09 adcb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 135 ret void 136 } 137 define void @test_adc_16(i16 %a0, i16* %a1, i16 %a2) optsize { 138 ; GENERIC-LABEL: test_adc_16: 139 ; GENERIC: # %bb.0: 140 ; GENERIC-NEXT: #APP 141 ; GENERIC-NEXT: adcw $511, %ax # imm = 0x1FF 142 ; GENERIC-NEXT: # sched: [2:0.67] 143 ; GENERIC-NEXT: adcw $511, %di # imm = 0x1FF 144 ; GENERIC-NEXT: # sched: [2:0.67] 145 ; GENERIC-NEXT: adcw $511, (%rsi) # imm = 0x1FF 146 ; GENERIC-NEXT: # sched: [9:1.00] 147 ; GENERIC-NEXT: adcw $7, %di # sched: [2:0.67] 148 ; GENERIC-NEXT: adcw $7, (%rsi) # sched: [9:1.00] 149 ; GENERIC-NEXT: adcw %dx, %di # sched: [2:0.67] 150 ; GENERIC-NEXT: adcw %di, (%rsi) # sched: [9:1.00] 151 ; GENERIC-NEXT: adcw (%rsi), %di # sched: [7:0.67] 152 ; GENERIC-NEXT: #NO_APP 153 ; GENERIC-NEXT: retq # sched: [1:1.00] 154 ; 155 ; ATOM-LABEL: test_adc_16: 156 ; ATOM: # %bb.0: 157 ; ATOM-NEXT: #APP 158 ; ATOM-NEXT: adcw $511, %ax # imm = 0x1FF 159 ; ATOM-NEXT: # sched: [1:0.50] 160 ; ATOM-NEXT: adcw $511, %di # imm = 0x1FF 161 ; ATOM-NEXT: # sched: [1:0.50] 162 ; ATOM-NEXT: adcw $511, (%rsi) # imm = 0x1FF 163 ; ATOM-NEXT: # sched: [1:1.00] 164 ; ATOM-NEXT: adcw $7, %di # sched: [1:0.50] 165 ; ATOM-NEXT: adcw $7, (%rsi) # sched: [1:1.00] 166 ; ATOM-NEXT: adcw %dx, %di # sched: [1:0.50] 167 ; ATOM-NEXT: adcw %di, (%rsi) # sched: [1:1.00] 168 ; ATOM-NEXT: adcw (%rsi), %di # sched: [1:1.00] 169 ; ATOM-NEXT: #NO_APP 170 ; ATOM-NEXT: retq # sched: [79:39.50] 171 ; 172 ; SLM-LABEL: test_adc_16: 173 ; SLM: # %bb.0: 174 ; SLM-NEXT: #APP 175 ; SLM-NEXT: adcw $511, %ax # imm = 0x1FF 176 ; SLM-NEXT: # sched: [1:0.50] 177 ; SLM-NEXT: adcw $511, %di # imm = 0x1FF 178 ; SLM-NEXT: # sched: [1:0.50] 179 ; SLM-NEXT: adcw $511, (%rsi) # imm = 0x1FF 180 ; SLM-NEXT: # sched: [5:2.00] 181 ; SLM-NEXT: adcw $7, %di # sched: [1:0.50] 182 ; SLM-NEXT: adcw $7, (%rsi) # sched: [5:2.00] 183 ; SLM-NEXT: adcw %dx, %di # sched: [1:0.50] 184 ; SLM-NEXT: adcw %di, (%rsi) # sched: [5:2.00] 185 ; SLM-NEXT: adcw (%rsi), %di # sched: [4:1.00] 186 ; SLM-NEXT: #NO_APP 187 ; SLM-NEXT: retq # sched: [4:1.00] 188 ; 189 ; SANDY-LABEL: test_adc_16: 190 ; SANDY: # %bb.0: 191 ; SANDY-NEXT: #APP 192 ; SANDY-NEXT: adcw $511, %ax # imm = 0x1FF 193 ; SANDY-NEXT: # sched: [2:0.67] 194 ; SANDY-NEXT: adcw $511, %di # imm = 0x1FF 195 ; SANDY-NEXT: # sched: [2:0.67] 196 ; SANDY-NEXT: adcw $511, (%rsi) # imm = 0x1FF 197 ; SANDY-NEXT: # sched: [9:1.00] 198 ; SANDY-NEXT: adcw $7, %di # sched: [2:0.67] 199 ; SANDY-NEXT: adcw $7, (%rsi) # sched: [9:1.00] 200 ; SANDY-NEXT: adcw %dx, %di # sched: [2:0.67] 201 ; SANDY-NEXT: adcw %di, (%rsi) # sched: [9:1.00] 202 ; SANDY-NEXT: adcw (%rsi), %di # sched: [7:0.67] 203 ; SANDY-NEXT: #NO_APP 204 ; SANDY-NEXT: retq # sched: [1:1.00] 205 ; 206 ; HASWELL-LABEL: test_adc_16: 207 ; HASWELL: # %bb.0: 208 ; HASWELL-NEXT: #APP 209 ; HASWELL-NEXT: adcw $511, %ax # imm = 0x1FF 210 ; HASWELL-NEXT: # sched: [2:0.50] 211 ; HASWELL-NEXT: adcw $511, %di # imm = 0x1FF 212 ; HASWELL-NEXT: # sched: [2:0.50] 213 ; HASWELL-NEXT: adcw $511, (%rsi) # imm = 0x1FF 214 ; HASWELL-NEXT: # sched: [9:1.00] 215 ; HASWELL-NEXT: adcw $7, %di # sched: [2:0.50] 216 ; HASWELL-NEXT: adcw $7, (%rsi) # sched: [9:1.00] 217 ; HASWELL-NEXT: adcw %dx, %di # sched: [2:0.50] 218 ; HASWELL-NEXT: adcw %di, (%rsi) # sched: [9:1.00] 219 ; HASWELL-NEXT: adcw (%rsi), %di # sched: [7:0.50] 220 ; HASWELL-NEXT: #NO_APP 221 ; HASWELL-NEXT: retq # sched: [7:1.00] 222 ; 223 ; BROADWELL-LABEL: test_adc_16: 224 ; BROADWELL: # %bb.0: 225 ; BROADWELL-NEXT: #APP 226 ; BROADWELL-NEXT: adcw $511, %ax # imm = 0x1FF 227 ; BROADWELL-NEXT: # sched: [1:0.50] 228 ; BROADWELL-NEXT: adcw $511, %di # imm = 0x1FF 229 ; BROADWELL-NEXT: # sched: [1:0.50] 230 ; BROADWELL-NEXT: adcw $511, (%rsi) # imm = 0x1FF 231 ; BROADWELL-NEXT: # sched: [8:1.00] 232 ; BROADWELL-NEXT: adcw $7, %di # sched: [1:0.50] 233 ; BROADWELL-NEXT: adcw $7, (%rsi) # sched: [8:1.00] 234 ; BROADWELL-NEXT: adcw %dx, %di # sched: [1:0.50] 235 ; BROADWELL-NEXT: adcw %di, (%rsi) # sched: [8:1.00] 236 ; BROADWELL-NEXT: adcw (%rsi), %di # sched: [6:0.50] 237 ; BROADWELL-NEXT: #NO_APP 238 ; BROADWELL-NEXT: retq # sched: [7:1.00] 239 ; 240 ; SKYLAKE-LABEL: test_adc_16: 241 ; SKYLAKE: # %bb.0: 242 ; SKYLAKE-NEXT: #APP 243 ; SKYLAKE-NEXT: adcw $511, %ax # imm = 0x1FF 244 ; SKYLAKE-NEXT: # sched: [1:0.50] 245 ; SKYLAKE-NEXT: adcw $511, %di # imm = 0x1FF 246 ; SKYLAKE-NEXT: # sched: [1:0.50] 247 ; SKYLAKE-NEXT: adcw $511, (%rsi) # imm = 0x1FF 248 ; SKYLAKE-NEXT: # sched: [8:1.00] 249 ; SKYLAKE-NEXT: adcw $7, %di # sched: [1:0.50] 250 ; SKYLAKE-NEXT: adcw $7, (%rsi) # sched: [8:1.00] 251 ; SKYLAKE-NEXT: adcw %dx, %di # sched: [1:0.50] 252 ; SKYLAKE-NEXT: adcw %di, (%rsi) # sched: [8:1.00] 253 ; SKYLAKE-NEXT: adcw (%rsi), %di # sched: [6:0.50] 254 ; SKYLAKE-NEXT: #NO_APP 255 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 256 ; 257 ; SKX-LABEL: test_adc_16: 258 ; SKX: # %bb.0: 259 ; SKX-NEXT: #APP 260 ; SKX-NEXT: adcw $511, %ax # imm = 0x1FF 261 ; SKX-NEXT: # sched: [1:0.50] 262 ; SKX-NEXT: adcw $511, %di # imm = 0x1FF 263 ; SKX-NEXT: # sched: [1:0.50] 264 ; SKX-NEXT: adcw $511, (%rsi) # imm = 0x1FF 265 ; SKX-NEXT: # sched: [8:1.00] 266 ; SKX-NEXT: adcw $7, %di # sched: [1:0.50] 267 ; SKX-NEXT: adcw $7, (%rsi) # sched: [8:1.00] 268 ; SKX-NEXT: adcw %dx, %di # sched: [1:0.50] 269 ; SKX-NEXT: adcw %di, (%rsi) # sched: [8:1.00] 270 ; SKX-NEXT: adcw (%rsi), %di # sched: [6:0.50] 271 ; SKX-NEXT: #NO_APP 272 ; SKX-NEXT: retq # sched: [7:1.00] 273 ; 274 ; BTVER2-LABEL: test_adc_16: 275 ; BTVER2: # %bb.0: 276 ; BTVER2-NEXT: #APP 277 ; BTVER2-NEXT: adcw $511, %ax # imm = 0x1FF 278 ; BTVER2-NEXT: # sched: [1:1.00] 279 ; BTVER2-NEXT: adcw $511, %di # imm = 0x1FF 280 ; BTVER2-NEXT: # sched: [1:1.00] 281 ; BTVER2-NEXT: adcw $511, (%rsi) # imm = 0x1FF 282 ; BTVER2-NEXT: # sched: [5:1.00] 283 ; BTVER2-NEXT: adcw $7, %di # sched: [1:1.00] 284 ; BTVER2-NEXT: adcw $7, (%rsi) # sched: [5:1.00] 285 ; BTVER2-NEXT: adcw %dx, %di # sched: [1:1.00] 286 ; BTVER2-NEXT: adcw %di, (%rsi) # sched: [5:1.00] 287 ; BTVER2-NEXT: adcw (%rsi), %di # sched: [4:1.00] 288 ; BTVER2-NEXT: #NO_APP 289 ; BTVER2-NEXT: retq # sched: [4:1.00] 290 ; 291 ; ZNVER1-LABEL: test_adc_16: 292 ; ZNVER1: # %bb.0: 293 ; ZNVER1-NEXT: #APP 294 ; ZNVER1-NEXT: adcw $511, %ax # imm = 0x1FF 295 ; ZNVER1-NEXT: # sched: [1:0.25] 296 ; ZNVER1-NEXT: adcw $511, %di # imm = 0x1FF 297 ; ZNVER1-NEXT: # sched: [1:0.25] 298 ; ZNVER1-NEXT: adcw $511, (%rsi) # imm = 0x1FF 299 ; ZNVER1-NEXT: # sched: [5:0.50] 300 ; ZNVER1-NEXT: adcw $7, %di # sched: [1:0.25] 301 ; ZNVER1-NEXT: adcw $7, (%rsi) # sched: [5:0.50] 302 ; ZNVER1-NEXT: adcw %dx, %di # sched: [1:0.25] 303 ; ZNVER1-NEXT: adcw %di, (%rsi) # sched: [5:0.50] 304 ; ZNVER1-NEXT: adcw (%rsi), %di # sched: [5:0.50] 305 ; ZNVER1-NEXT: #NO_APP 306 ; ZNVER1-NEXT: retq # sched: [1:0.50] 307 tail call void asm "adcw $3, %AX \0A\09 adcw $3, $0 \0A\09 adcw $3, $2 \0A\09 adcw $4, $0 \0A\09 adcw $4, $2 \0A\09 adcw $1, $0 \0A\09 adcw $0, $2 \0A\09 adcw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 308 ret void 309 } 310 define void @test_adc_32(i32 %a0, i32* %a1, i32 %a2) optsize { 311 ; GENERIC-LABEL: test_adc_32: 312 ; GENERIC: # %bb.0: 313 ; GENERIC-NEXT: #APP 314 ; GENERIC-NEXT: adcl $665536, %eax # imm = 0xA27C0 315 ; GENERIC-NEXT: # sched: [2:0.67] 316 ; GENERIC-NEXT: adcl $665536, %edi # imm = 0xA27C0 317 ; GENERIC-NEXT: # sched: [2:0.67] 318 ; GENERIC-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 319 ; GENERIC-NEXT: # sched: [9:1.00] 320 ; GENERIC-NEXT: adcl $7, %edi # sched: [2:0.67] 321 ; GENERIC-NEXT: adcl $7, (%rsi) # sched: [9:1.00] 322 ; GENERIC-NEXT: adcl %edx, %edi # sched: [2:0.67] 323 ; GENERIC-NEXT: adcl %edi, (%rsi) # sched: [9:1.00] 324 ; GENERIC-NEXT: adcl (%rsi), %edi # sched: [7:0.67] 325 ; GENERIC-NEXT: #NO_APP 326 ; GENERIC-NEXT: retq # sched: [1:1.00] 327 ; 328 ; ATOM-LABEL: test_adc_32: 329 ; ATOM: # %bb.0: 330 ; ATOM-NEXT: #APP 331 ; ATOM-NEXT: adcl $665536, %eax # imm = 0xA27C0 332 ; ATOM-NEXT: # sched: [1:0.50] 333 ; ATOM-NEXT: adcl $665536, %edi # imm = 0xA27C0 334 ; ATOM-NEXT: # sched: [1:0.50] 335 ; ATOM-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 336 ; ATOM-NEXT: # sched: [1:1.00] 337 ; ATOM-NEXT: adcl $7, %edi # sched: [1:0.50] 338 ; ATOM-NEXT: adcl $7, (%rsi) # sched: [1:1.00] 339 ; ATOM-NEXT: adcl %edx, %edi # sched: [1:0.50] 340 ; ATOM-NEXT: adcl %edi, (%rsi) # sched: [1:1.00] 341 ; ATOM-NEXT: adcl (%rsi), %edi # sched: [1:1.00] 342 ; ATOM-NEXT: #NO_APP 343 ; ATOM-NEXT: retq # sched: [79:39.50] 344 ; 345 ; SLM-LABEL: test_adc_32: 346 ; SLM: # %bb.0: 347 ; SLM-NEXT: #APP 348 ; SLM-NEXT: adcl $665536, %eax # imm = 0xA27C0 349 ; SLM-NEXT: # sched: [1:0.50] 350 ; SLM-NEXT: adcl $665536, %edi # imm = 0xA27C0 351 ; SLM-NEXT: # sched: [1:0.50] 352 ; SLM-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 353 ; SLM-NEXT: # sched: [5:2.00] 354 ; SLM-NEXT: adcl $7, %edi # sched: [1:0.50] 355 ; SLM-NEXT: adcl $7, (%rsi) # sched: [5:2.00] 356 ; SLM-NEXT: adcl %edx, %edi # sched: [1:0.50] 357 ; SLM-NEXT: adcl %edi, (%rsi) # sched: [5:2.00] 358 ; SLM-NEXT: adcl (%rsi), %edi # sched: [4:1.00] 359 ; SLM-NEXT: #NO_APP 360 ; SLM-NEXT: retq # sched: [4:1.00] 361 ; 362 ; SANDY-LABEL: test_adc_32: 363 ; SANDY: # %bb.0: 364 ; SANDY-NEXT: #APP 365 ; SANDY-NEXT: adcl $665536, %eax # imm = 0xA27C0 366 ; SANDY-NEXT: # sched: [2:0.67] 367 ; SANDY-NEXT: adcl $665536, %edi # imm = 0xA27C0 368 ; SANDY-NEXT: # sched: [2:0.67] 369 ; SANDY-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 370 ; SANDY-NEXT: # sched: [9:1.00] 371 ; SANDY-NEXT: adcl $7, %edi # sched: [2:0.67] 372 ; SANDY-NEXT: adcl $7, (%rsi) # sched: [9:1.00] 373 ; SANDY-NEXT: adcl %edx, %edi # sched: [2:0.67] 374 ; SANDY-NEXT: adcl %edi, (%rsi) # sched: [9:1.00] 375 ; SANDY-NEXT: adcl (%rsi), %edi # sched: [7:0.67] 376 ; SANDY-NEXT: #NO_APP 377 ; SANDY-NEXT: retq # sched: [1:1.00] 378 ; 379 ; HASWELL-LABEL: test_adc_32: 380 ; HASWELL: # %bb.0: 381 ; HASWELL-NEXT: #APP 382 ; HASWELL-NEXT: adcl $665536, %eax # imm = 0xA27C0 383 ; HASWELL-NEXT: # sched: [2:0.50] 384 ; HASWELL-NEXT: adcl $665536, %edi # imm = 0xA27C0 385 ; HASWELL-NEXT: # sched: [2:0.50] 386 ; HASWELL-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 387 ; HASWELL-NEXT: # sched: [9:1.00] 388 ; HASWELL-NEXT: adcl $7, %edi # sched: [2:0.50] 389 ; HASWELL-NEXT: adcl $7, (%rsi) # sched: [9:1.00] 390 ; HASWELL-NEXT: adcl %edx, %edi # sched: [2:0.50] 391 ; HASWELL-NEXT: adcl %edi, (%rsi) # sched: [9:1.00] 392 ; HASWELL-NEXT: adcl (%rsi), %edi # sched: [7:0.50] 393 ; HASWELL-NEXT: #NO_APP 394 ; HASWELL-NEXT: retq # sched: [7:1.00] 395 ; 396 ; BROADWELL-LABEL: test_adc_32: 397 ; BROADWELL: # %bb.0: 398 ; BROADWELL-NEXT: #APP 399 ; BROADWELL-NEXT: adcl $665536, %eax # imm = 0xA27C0 400 ; BROADWELL-NEXT: # sched: [1:0.50] 401 ; BROADWELL-NEXT: adcl $665536, %edi # imm = 0xA27C0 402 ; BROADWELL-NEXT: # sched: [1:0.50] 403 ; BROADWELL-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 404 ; BROADWELL-NEXT: # sched: [8:1.00] 405 ; BROADWELL-NEXT: adcl $7, %edi # sched: [1:0.50] 406 ; BROADWELL-NEXT: adcl $7, (%rsi) # sched: [8:1.00] 407 ; BROADWELL-NEXT: adcl %edx, %edi # sched: [1:0.50] 408 ; BROADWELL-NEXT: adcl %edi, (%rsi) # sched: [8:1.00] 409 ; BROADWELL-NEXT: adcl (%rsi), %edi # sched: [6:0.50] 410 ; BROADWELL-NEXT: #NO_APP 411 ; BROADWELL-NEXT: retq # sched: [7:1.00] 412 ; 413 ; SKYLAKE-LABEL: test_adc_32: 414 ; SKYLAKE: # %bb.0: 415 ; SKYLAKE-NEXT: #APP 416 ; SKYLAKE-NEXT: adcl $665536, %eax # imm = 0xA27C0 417 ; SKYLAKE-NEXT: # sched: [1:0.50] 418 ; SKYLAKE-NEXT: adcl $665536, %edi # imm = 0xA27C0 419 ; SKYLAKE-NEXT: # sched: [1:0.50] 420 ; SKYLAKE-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 421 ; SKYLAKE-NEXT: # sched: [8:1.00] 422 ; SKYLAKE-NEXT: adcl $7, %edi # sched: [1:0.50] 423 ; SKYLAKE-NEXT: adcl $7, (%rsi) # sched: [8:1.00] 424 ; SKYLAKE-NEXT: adcl %edx, %edi # sched: [1:0.50] 425 ; SKYLAKE-NEXT: adcl %edi, (%rsi) # sched: [8:1.00] 426 ; SKYLAKE-NEXT: adcl (%rsi), %edi # sched: [6:0.50] 427 ; SKYLAKE-NEXT: #NO_APP 428 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 429 ; 430 ; SKX-LABEL: test_adc_32: 431 ; SKX: # %bb.0: 432 ; SKX-NEXT: #APP 433 ; SKX-NEXT: adcl $665536, %eax # imm = 0xA27C0 434 ; SKX-NEXT: # sched: [1:0.50] 435 ; SKX-NEXT: adcl $665536, %edi # imm = 0xA27C0 436 ; SKX-NEXT: # sched: [1:0.50] 437 ; SKX-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 438 ; SKX-NEXT: # sched: [8:1.00] 439 ; SKX-NEXT: adcl $7, %edi # sched: [1:0.50] 440 ; SKX-NEXT: adcl $7, (%rsi) # sched: [8:1.00] 441 ; SKX-NEXT: adcl %edx, %edi # sched: [1:0.50] 442 ; SKX-NEXT: adcl %edi, (%rsi) # sched: [8:1.00] 443 ; SKX-NEXT: adcl (%rsi), %edi # sched: [6:0.50] 444 ; SKX-NEXT: #NO_APP 445 ; SKX-NEXT: retq # sched: [7:1.00] 446 ; 447 ; BTVER2-LABEL: test_adc_32: 448 ; BTVER2: # %bb.0: 449 ; BTVER2-NEXT: #APP 450 ; BTVER2-NEXT: adcl $665536, %eax # imm = 0xA27C0 451 ; BTVER2-NEXT: # sched: [1:1.00] 452 ; BTVER2-NEXT: adcl $665536, %edi # imm = 0xA27C0 453 ; BTVER2-NEXT: # sched: [1:1.00] 454 ; BTVER2-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 455 ; BTVER2-NEXT: # sched: [5:1.00] 456 ; BTVER2-NEXT: adcl $7, %edi # sched: [1:1.00] 457 ; BTVER2-NEXT: adcl $7, (%rsi) # sched: [5:1.00] 458 ; BTVER2-NEXT: adcl %edx, %edi # sched: [1:1.00] 459 ; BTVER2-NEXT: adcl %edi, (%rsi) # sched: [5:1.00] 460 ; BTVER2-NEXT: adcl (%rsi), %edi # sched: [4:1.00] 461 ; BTVER2-NEXT: #NO_APP 462 ; BTVER2-NEXT: retq # sched: [4:1.00] 463 ; 464 ; ZNVER1-LABEL: test_adc_32: 465 ; ZNVER1: # %bb.0: 466 ; ZNVER1-NEXT: #APP 467 ; ZNVER1-NEXT: adcl $665536, %eax # imm = 0xA27C0 468 ; ZNVER1-NEXT: # sched: [1:0.25] 469 ; ZNVER1-NEXT: adcl $665536, %edi # imm = 0xA27C0 470 ; ZNVER1-NEXT: # sched: [1:0.25] 471 ; ZNVER1-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 472 ; ZNVER1-NEXT: # sched: [5:0.50] 473 ; ZNVER1-NEXT: adcl $7, %edi # sched: [1:0.25] 474 ; ZNVER1-NEXT: adcl $7, (%rsi) # sched: [5:0.50] 475 ; ZNVER1-NEXT: adcl %edx, %edi # sched: [1:0.25] 476 ; ZNVER1-NEXT: adcl %edi, (%rsi) # sched: [5:0.50] 477 ; ZNVER1-NEXT: adcl (%rsi), %edi # sched: [5:0.50] 478 ; ZNVER1-NEXT: #NO_APP 479 ; ZNVER1-NEXT: retq # sched: [1:0.50] 480 tail call void asm "adcl $3, %EAX \0A\09 adcl $3, $0 \0A\09 adcl $3, $2 \0A\09 adcl $4, $0 \0A\09 adcl $4, $2 \0A\09 adcl $1, $0 \0A\09 adcl $0, $2 \0A\09 adcl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 481 ret void 482 } 483 define void @test_adc_64(i64 %a0, i64* %a1, i64 %a2) optsize { 484 ; GENERIC-LABEL: test_adc_64: 485 ; GENERIC: # %bb.0: 486 ; GENERIC-NEXT: #APP 487 ; GENERIC-NEXT: adcq $665536, %rax # imm = 0xA27C0 488 ; GENERIC-NEXT: # sched: [2:0.67] 489 ; GENERIC-NEXT: adcq $665536, %rdi # imm = 0xA27C0 490 ; GENERIC-NEXT: # sched: [2:0.67] 491 ; GENERIC-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 492 ; GENERIC-NEXT: # sched: [9:1.00] 493 ; GENERIC-NEXT: adcq $7, %rdi # sched: [2:0.67] 494 ; GENERIC-NEXT: adcq $7, (%rsi) # sched: [9:1.00] 495 ; GENERIC-NEXT: adcq %rdx, %rdi # sched: [2:0.67] 496 ; GENERIC-NEXT: adcq %rdi, (%rsi) # sched: [9:1.00] 497 ; GENERIC-NEXT: adcq (%rsi), %rdi # sched: [7:0.67] 498 ; GENERIC-NEXT: #NO_APP 499 ; GENERIC-NEXT: retq # sched: [1:1.00] 500 ; 501 ; ATOM-LABEL: test_adc_64: 502 ; ATOM: # %bb.0: 503 ; ATOM-NEXT: #APP 504 ; ATOM-NEXT: adcq $665536, %rax # imm = 0xA27C0 505 ; ATOM-NEXT: # sched: [1:0.50] 506 ; ATOM-NEXT: adcq $665536, %rdi # imm = 0xA27C0 507 ; ATOM-NEXT: # sched: [1:0.50] 508 ; ATOM-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 509 ; ATOM-NEXT: # sched: [1:1.00] 510 ; ATOM-NEXT: adcq $7, %rdi # sched: [1:0.50] 511 ; ATOM-NEXT: adcq $7, (%rsi) # sched: [1:1.00] 512 ; ATOM-NEXT: adcq %rdx, %rdi # sched: [1:0.50] 513 ; ATOM-NEXT: adcq %rdi, (%rsi) # sched: [1:1.00] 514 ; ATOM-NEXT: adcq (%rsi), %rdi # sched: [1:1.00] 515 ; ATOM-NEXT: #NO_APP 516 ; ATOM-NEXT: retq # sched: [79:39.50] 517 ; 518 ; SLM-LABEL: test_adc_64: 519 ; SLM: # %bb.0: 520 ; SLM-NEXT: #APP 521 ; SLM-NEXT: adcq $665536, %rax # imm = 0xA27C0 522 ; SLM-NEXT: # sched: [1:0.50] 523 ; SLM-NEXT: adcq $665536, %rdi # imm = 0xA27C0 524 ; SLM-NEXT: # sched: [1:0.50] 525 ; SLM-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 526 ; SLM-NEXT: # sched: [5:2.00] 527 ; SLM-NEXT: adcq $7, %rdi # sched: [1:0.50] 528 ; SLM-NEXT: adcq $7, (%rsi) # sched: [5:2.00] 529 ; SLM-NEXT: adcq %rdx, %rdi # sched: [1:0.50] 530 ; SLM-NEXT: adcq %rdi, (%rsi) # sched: [5:2.00] 531 ; SLM-NEXT: adcq (%rsi), %rdi # sched: [4:1.00] 532 ; SLM-NEXT: #NO_APP 533 ; SLM-NEXT: retq # sched: [4:1.00] 534 ; 535 ; SANDY-LABEL: test_adc_64: 536 ; SANDY: # %bb.0: 537 ; SANDY-NEXT: #APP 538 ; SANDY-NEXT: adcq $665536, %rax # imm = 0xA27C0 539 ; SANDY-NEXT: # sched: [2:0.67] 540 ; SANDY-NEXT: adcq $665536, %rdi # imm = 0xA27C0 541 ; SANDY-NEXT: # sched: [2:0.67] 542 ; SANDY-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 543 ; SANDY-NEXT: # sched: [9:1.00] 544 ; SANDY-NEXT: adcq $7, %rdi # sched: [2:0.67] 545 ; SANDY-NEXT: adcq $7, (%rsi) # sched: [9:1.00] 546 ; SANDY-NEXT: adcq %rdx, %rdi # sched: [2:0.67] 547 ; SANDY-NEXT: adcq %rdi, (%rsi) # sched: [9:1.00] 548 ; SANDY-NEXT: adcq (%rsi), %rdi # sched: [7:0.67] 549 ; SANDY-NEXT: #NO_APP 550 ; SANDY-NEXT: retq # sched: [1:1.00] 551 ; 552 ; HASWELL-LABEL: test_adc_64: 553 ; HASWELL: # %bb.0: 554 ; HASWELL-NEXT: #APP 555 ; HASWELL-NEXT: adcq $665536, %rax # imm = 0xA27C0 556 ; HASWELL-NEXT: # sched: [2:0.50] 557 ; HASWELL-NEXT: adcq $665536, %rdi # imm = 0xA27C0 558 ; HASWELL-NEXT: # sched: [2:0.50] 559 ; HASWELL-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 560 ; HASWELL-NEXT: # sched: [9:1.00] 561 ; HASWELL-NEXT: adcq $7, %rdi # sched: [2:0.50] 562 ; HASWELL-NEXT: adcq $7, (%rsi) # sched: [9:1.00] 563 ; HASWELL-NEXT: adcq %rdx, %rdi # sched: [2:0.50] 564 ; HASWELL-NEXT: adcq %rdi, (%rsi) # sched: [9:1.00] 565 ; HASWELL-NEXT: adcq (%rsi), %rdi # sched: [7:0.50] 566 ; HASWELL-NEXT: #NO_APP 567 ; HASWELL-NEXT: retq # sched: [7:1.00] 568 ; 569 ; BROADWELL-LABEL: test_adc_64: 570 ; BROADWELL: # %bb.0: 571 ; BROADWELL-NEXT: #APP 572 ; BROADWELL-NEXT: adcq $665536, %rax # imm = 0xA27C0 573 ; BROADWELL-NEXT: # sched: [1:0.50] 574 ; BROADWELL-NEXT: adcq $665536, %rdi # imm = 0xA27C0 575 ; BROADWELL-NEXT: # sched: [1:0.50] 576 ; BROADWELL-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 577 ; BROADWELL-NEXT: # sched: [8:1.00] 578 ; BROADWELL-NEXT: adcq $7, %rdi # sched: [1:0.50] 579 ; BROADWELL-NEXT: adcq $7, (%rsi) # sched: [8:1.00] 580 ; BROADWELL-NEXT: adcq %rdx, %rdi # sched: [1:0.50] 581 ; BROADWELL-NEXT: adcq %rdi, (%rsi) # sched: [8:1.00] 582 ; BROADWELL-NEXT: adcq (%rsi), %rdi # sched: [6:0.50] 583 ; BROADWELL-NEXT: #NO_APP 584 ; BROADWELL-NEXT: retq # sched: [7:1.00] 585 ; 586 ; SKYLAKE-LABEL: test_adc_64: 587 ; SKYLAKE: # %bb.0: 588 ; SKYLAKE-NEXT: #APP 589 ; SKYLAKE-NEXT: adcq $665536, %rax # imm = 0xA27C0 590 ; SKYLAKE-NEXT: # sched: [1:0.50] 591 ; SKYLAKE-NEXT: adcq $665536, %rdi # imm = 0xA27C0 592 ; SKYLAKE-NEXT: # sched: [1:0.50] 593 ; SKYLAKE-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 594 ; SKYLAKE-NEXT: # sched: [8:1.00] 595 ; SKYLAKE-NEXT: adcq $7, %rdi # sched: [1:0.50] 596 ; SKYLAKE-NEXT: adcq $7, (%rsi) # sched: [8:1.00] 597 ; SKYLAKE-NEXT: adcq %rdx, %rdi # sched: [1:0.50] 598 ; SKYLAKE-NEXT: adcq %rdi, (%rsi) # sched: [8:1.00] 599 ; SKYLAKE-NEXT: adcq (%rsi), %rdi # sched: [6:0.50] 600 ; SKYLAKE-NEXT: #NO_APP 601 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 602 ; 603 ; SKX-LABEL: test_adc_64: 604 ; SKX: # %bb.0: 605 ; SKX-NEXT: #APP 606 ; SKX-NEXT: adcq $665536, %rax # imm = 0xA27C0 607 ; SKX-NEXT: # sched: [1:0.50] 608 ; SKX-NEXT: adcq $665536, %rdi # imm = 0xA27C0 609 ; SKX-NEXT: # sched: [1:0.50] 610 ; SKX-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 611 ; SKX-NEXT: # sched: [8:1.00] 612 ; SKX-NEXT: adcq $7, %rdi # sched: [1:0.50] 613 ; SKX-NEXT: adcq $7, (%rsi) # sched: [8:1.00] 614 ; SKX-NEXT: adcq %rdx, %rdi # sched: [1:0.50] 615 ; SKX-NEXT: adcq %rdi, (%rsi) # sched: [8:1.00] 616 ; SKX-NEXT: adcq (%rsi), %rdi # sched: [6:0.50] 617 ; SKX-NEXT: #NO_APP 618 ; SKX-NEXT: retq # sched: [7:1.00] 619 ; 620 ; BTVER2-LABEL: test_adc_64: 621 ; BTVER2: # %bb.0: 622 ; BTVER2-NEXT: #APP 623 ; BTVER2-NEXT: adcq $665536, %rax # imm = 0xA27C0 624 ; BTVER2-NEXT: # sched: [1:1.00] 625 ; BTVER2-NEXT: adcq $665536, %rdi # imm = 0xA27C0 626 ; BTVER2-NEXT: # sched: [1:1.00] 627 ; BTVER2-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 628 ; BTVER2-NEXT: # sched: [5:1.00] 629 ; BTVER2-NEXT: adcq $7, %rdi # sched: [1:1.00] 630 ; BTVER2-NEXT: adcq $7, (%rsi) # sched: [5:1.00] 631 ; BTVER2-NEXT: adcq %rdx, %rdi # sched: [1:1.00] 632 ; BTVER2-NEXT: adcq %rdi, (%rsi) # sched: [5:1.00] 633 ; BTVER2-NEXT: adcq (%rsi), %rdi # sched: [4:1.00] 634 ; BTVER2-NEXT: #NO_APP 635 ; BTVER2-NEXT: retq # sched: [4:1.00] 636 ; 637 ; ZNVER1-LABEL: test_adc_64: 638 ; ZNVER1: # %bb.0: 639 ; ZNVER1-NEXT: #APP 640 ; ZNVER1-NEXT: adcq $665536, %rax # imm = 0xA27C0 641 ; ZNVER1-NEXT: # sched: [1:0.25] 642 ; ZNVER1-NEXT: adcq $665536, %rdi # imm = 0xA27C0 643 ; ZNVER1-NEXT: # sched: [1:0.25] 644 ; ZNVER1-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 645 ; ZNVER1-NEXT: # sched: [5:0.50] 646 ; ZNVER1-NEXT: adcq $7, %rdi # sched: [1:0.25] 647 ; ZNVER1-NEXT: adcq $7, (%rsi) # sched: [5:0.50] 648 ; ZNVER1-NEXT: adcq %rdx, %rdi # sched: [1:0.25] 649 ; ZNVER1-NEXT: adcq %rdi, (%rsi) # sched: [5:0.50] 650 ; ZNVER1-NEXT: adcq (%rsi), %rdi # sched: [5:0.50] 651 ; ZNVER1-NEXT: #NO_APP 652 ; ZNVER1-NEXT: retq # sched: [1:0.50] 653 tail call void asm "adcq $3, %RAX \0A\09 adcq $3, $0 \0A\09 adcq $3, $2 \0A\09 adcq $4, $0 \0A\09 adcq $4, $2 \0A\09 adcq $1, $0 \0A\09 adcq $0, $2 \0A\09 adcq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 654 ret void 655 } 656 657 define void @test_add_8(i8 %a0, i8* %a1, i8 %a2) optsize { 658 ; GENERIC-LABEL: test_add_8: 659 ; GENERIC: # %bb.0: 660 ; GENERIC-NEXT: #APP 661 ; GENERIC-NEXT: addb $7, %al # sched: [1:0.33] 662 ; GENERIC-NEXT: addb $7, %dil # sched: [1:0.33] 663 ; GENERIC-NEXT: addb $7, (%rsi) # sched: [7:1.00] 664 ; GENERIC-NEXT: addb %dl, %dil # sched: [1:0.33] 665 ; GENERIC-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 666 ; GENERIC-NEXT: addb (%rsi), %dil # sched: [6:0.50] 667 ; GENERIC-NEXT: #NO_APP 668 ; GENERIC-NEXT: retq # sched: [1:1.00] 669 ; 670 ; ATOM-LABEL: test_add_8: 671 ; ATOM: # %bb.0: 672 ; ATOM-NEXT: #APP 673 ; ATOM-NEXT: addb $7, %al # sched: [1:0.50] 674 ; ATOM-NEXT: addb $7, %dil # sched: [1:0.50] 675 ; ATOM-NEXT: addb $7, (%rsi) # sched: [1:1.00] 676 ; ATOM-NEXT: addb %dl, %dil # sched: [1:0.50] 677 ; ATOM-NEXT: addb %dil, (%rsi) # sched: [1:1.00] 678 ; ATOM-NEXT: addb (%rsi), %dil # sched: [1:1.00] 679 ; ATOM-NEXT: #NO_APP 680 ; ATOM-NEXT: retq # sched: [79:39.50] 681 ; 682 ; SLM-LABEL: test_add_8: 683 ; SLM: # %bb.0: 684 ; SLM-NEXT: #APP 685 ; SLM-NEXT: addb $7, %al # sched: [1:0.50] 686 ; SLM-NEXT: addb $7, %dil # sched: [1:0.50] 687 ; SLM-NEXT: addb $7, (%rsi) # sched: [5:2.00] 688 ; SLM-NEXT: addb %dl, %dil # sched: [1:0.50] 689 ; SLM-NEXT: addb %dil, (%rsi) # sched: [5:2.00] 690 ; SLM-NEXT: addb (%rsi), %dil # sched: [4:1.00] 691 ; SLM-NEXT: #NO_APP 692 ; SLM-NEXT: retq # sched: [4:1.00] 693 ; 694 ; SANDY-LABEL: test_add_8: 695 ; SANDY: # %bb.0: 696 ; SANDY-NEXT: #APP 697 ; SANDY-NEXT: addb $7, %al # sched: [1:0.33] 698 ; SANDY-NEXT: addb $7, %dil # sched: [1:0.33] 699 ; SANDY-NEXT: addb $7, (%rsi) # sched: [7:1.00] 700 ; SANDY-NEXT: addb %dl, %dil # sched: [1:0.33] 701 ; SANDY-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 702 ; SANDY-NEXT: addb (%rsi), %dil # sched: [6:0.50] 703 ; SANDY-NEXT: #NO_APP 704 ; SANDY-NEXT: retq # sched: [1:1.00] 705 ; 706 ; HASWELL-LABEL: test_add_8: 707 ; HASWELL: # %bb.0: 708 ; HASWELL-NEXT: #APP 709 ; HASWELL-NEXT: addb $7, %al # sched: [1:0.25] 710 ; HASWELL-NEXT: addb $7, %dil # sched: [1:0.25] 711 ; HASWELL-NEXT: addb $7, (%rsi) # sched: [7:1.00] 712 ; HASWELL-NEXT: addb %dl, %dil # sched: [1:0.25] 713 ; HASWELL-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 714 ; HASWELL-NEXT: addb (%rsi), %dil # sched: [6:0.50] 715 ; HASWELL-NEXT: #NO_APP 716 ; HASWELL-NEXT: retq # sched: [7:1.00] 717 ; 718 ; BROADWELL-LABEL: test_add_8: 719 ; BROADWELL: # %bb.0: 720 ; BROADWELL-NEXT: #APP 721 ; BROADWELL-NEXT: addb $7, %al # sched: [1:0.25] 722 ; BROADWELL-NEXT: addb $7, %dil # sched: [1:0.25] 723 ; BROADWELL-NEXT: addb $7, (%rsi) # sched: [7:1.00] 724 ; BROADWELL-NEXT: addb %dl, %dil # sched: [1:0.25] 725 ; BROADWELL-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 726 ; BROADWELL-NEXT: addb (%rsi), %dil # sched: [6:0.50] 727 ; BROADWELL-NEXT: #NO_APP 728 ; BROADWELL-NEXT: retq # sched: [7:1.00] 729 ; 730 ; SKYLAKE-LABEL: test_add_8: 731 ; SKYLAKE: # %bb.0: 732 ; SKYLAKE-NEXT: #APP 733 ; SKYLAKE-NEXT: addb $7, %al # sched: [1:0.25] 734 ; SKYLAKE-NEXT: addb $7, %dil # sched: [1:0.25] 735 ; SKYLAKE-NEXT: addb $7, (%rsi) # sched: [7:1.00] 736 ; SKYLAKE-NEXT: addb %dl, %dil # sched: [1:0.25] 737 ; SKYLAKE-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 738 ; SKYLAKE-NEXT: addb (%rsi), %dil # sched: [6:0.50] 739 ; SKYLAKE-NEXT: #NO_APP 740 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 741 ; 742 ; SKX-LABEL: test_add_8: 743 ; SKX: # %bb.0: 744 ; SKX-NEXT: #APP 745 ; SKX-NEXT: addb $7, %al # sched: [1:0.25] 746 ; SKX-NEXT: addb $7, %dil # sched: [1:0.25] 747 ; SKX-NEXT: addb $7, (%rsi) # sched: [7:1.00] 748 ; SKX-NEXT: addb %dl, %dil # sched: [1:0.25] 749 ; SKX-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 750 ; SKX-NEXT: addb (%rsi), %dil # sched: [6:0.50] 751 ; SKX-NEXT: #NO_APP 752 ; SKX-NEXT: retq # sched: [7:1.00] 753 ; 754 ; BTVER2-LABEL: test_add_8: 755 ; BTVER2: # %bb.0: 756 ; BTVER2-NEXT: #APP 757 ; BTVER2-NEXT: addb $7, %al # sched: [1:0.50] 758 ; BTVER2-NEXT: addb $7, %dil # sched: [1:0.50] 759 ; BTVER2-NEXT: addb $7, (%rsi) # sched: [5:1.00] 760 ; BTVER2-NEXT: addb %dl, %dil # sched: [1:0.50] 761 ; BTVER2-NEXT: addb %dil, (%rsi) # sched: [5:1.00] 762 ; BTVER2-NEXT: addb (%rsi), %dil # sched: [4:1.00] 763 ; BTVER2-NEXT: #NO_APP 764 ; BTVER2-NEXT: retq # sched: [4:1.00] 765 ; 766 ; ZNVER1-LABEL: test_add_8: 767 ; ZNVER1: # %bb.0: 768 ; ZNVER1-NEXT: #APP 769 ; ZNVER1-NEXT: addb $7, %al # sched: [1:0.25] 770 ; ZNVER1-NEXT: addb $7, %dil # sched: [1:0.25] 771 ; ZNVER1-NEXT: addb $7, (%rsi) # sched: [5:0.50] 772 ; ZNVER1-NEXT: addb %dl, %dil # sched: [1:0.25] 773 ; ZNVER1-NEXT: addb %dil, (%rsi) # sched: [5:0.50] 774 ; ZNVER1-NEXT: addb (%rsi), %dil # sched: [5:0.50] 775 ; ZNVER1-NEXT: #NO_APP 776 ; ZNVER1-NEXT: retq # sched: [1:0.50] 777 tail call void asm "addb $3, %AL \0A\09 addb $3, $0 \0A\09 addb $3, $2 \0A\09 addb $1, $0 \0A\09 addb $0, $2 \0A\09 addb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 778 ret void 779 } 780 define void @test_add_16(i16 %a0, i16* %a1, i16 %a2) optsize { 781 ; GENERIC-LABEL: test_add_16: 782 ; GENERIC: # %bb.0: 783 ; GENERIC-NEXT: #APP 784 ; GENERIC-NEXT: addw $511, %ax # imm = 0x1FF 785 ; GENERIC-NEXT: # sched: [1:0.33] 786 ; GENERIC-NEXT: addw $511, %di # imm = 0x1FF 787 ; GENERIC-NEXT: # sched: [1:0.33] 788 ; GENERIC-NEXT: addw $511, (%rsi) # imm = 0x1FF 789 ; GENERIC-NEXT: # sched: [7:1.00] 790 ; GENERIC-NEXT: addw $7, %di # sched: [1:0.33] 791 ; GENERIC-NEXT: addw $7, (%rsi) # sched: [7:1.00] 792 ; GENERIC-NEXT: addw %dx, %di # sched: [1:0.33] 793 ; GENERIC-NEXT: addw %di, (%rsi) # sched: [7:1.00] 794 ; GENERIC-NEXT: addw (%rsi), %di # sched: [6:0.50] 795 ; GENERIC-NEXT: #NO_APP 796 ; GENERIC-NEXT: retq # sched: [1:1.00] 797 ; 798 ; ATOM-LABEL: test_add_16: 799 ; ATOM: # %bb.0: 800 ; ATOM-NEXT: #APP 801 ; ATOM-NEXT: addw $511, %ax # imm = 0x1FF 802 ; ATOM-NEXT: # sched: [1:0.50] 803 ; ATOM-NEXT: addw $511, %di # imm = 0x1FF 804 ; ATOM-NEXT: # sched: [1:0.50] 805 ; ATOM-NEXT: addw $511, (%rsi) # imm = 0x1FF 806 ; ATOM-NEXT: # sched: [1:1.00] 807 ; ATOM-NEXT: addw $7, %di # sched: [1:0.50] 808 ; ATOM-NEXT: addw $7, (%rsi) # sched: [1:1.00] 809 ; ATOM-NEXT: addw %dx, %di # sched: [1:0.50] 810 ; ATOM-NEXT: addw %di, (%rsi) # sched: [1:1.00] 811 ; ATOM-NEXT: addw (%rsi), %di # sched: [1:1.00] 812 ; ATOM-NEXT: #NO_APP 813 ; ATOM-NEXT: retq # sched: [79:39.50] 814 ; 815 ; SLM-LABEL: test_add_16: 816 ; SLM: # %bb.0: 817 ; SLM-NEXT: #APP 818 ; SLM-NEXT: addw $511, %ax # imm = 0x1FF 819 ; SLM-NEXT: # sched: [1:0.50] 820 ; SLM-NEXT: addw $511, %di # imm = 0x1FF 821 ; SLM-NEXT: # sched: [1:0.50] 822 ; SLM-NEXT: addw $511, (%rsi) # imm = 0x1FF 823 ; SLM-NEXT: # sched: [5:2.00] 824 ; SLM-NEXT: addw $7, %di # sched: [1:0.50] 825 ; SLM-NEXT: addw $7, (%rsi) # sched: [5:2.00] 826 ; SLM-NEXT: addw %dx, %di # sched: [1:0.50] 827 ; SLM-NEXT: addw %di, (%rsi) # sched: [5:2.00] 828 ; SLM-NEXT: addw (%rsi), %di # sched: [4:1.00] 829 ; SLM-NEXT: #NO_APP 830 ; SLM-NEXT: retq # sched: [4:1.00] 831 ; 832 ; SANDY-LABEL: test_add_16: 833 ; SANDY: # %bb.0: 834 ; SANDY-NEXT: #APP 835 ; SANDY-NEXT: addw $511, %ax # imm = 0x1FF 836 ; SANDY-NEXT: # sched: [1:0.33] 837 ; SANDY-NEXT: addw $511, %di # imm = 0x1FF 838 ; SANDY-NEXT: # sched: [1:0.33] 839 ; SANDY-NEXT: addw $511, (%rsi) # imm = 0x1FF 840 ; SANDY-NEXT: # sched: [7:1.00] 841 ; SANDY-NEXT: addw $7, %di # sched: [1:0.33] 842 ; SANDY-NEXT: addw $7, (%rsi) # sched: [7:1.00] 843 ; SANDY-NEXT: addw %dx, %di # sched: [1:0.33] 844 ; SANDY-NEXT: addw %di, (%rsi) # sched: [7:1.00] 845 ; SANDY-NEXT: addw (%rsi), %di # sched: [6:0.50] 846 ; SANDY-NEXT: #NO_APP 847 ; SANDY-NEXT: retq # sched: [1:1.00] 848 ; 849 ; HASWELL-LABEL: test_add_16: 850 ; HASWELL: # %bb.0: 851 ; HASWELL-NEXT: #APP 852 ; HASWELL-NEXT: addw $511, %ax # imm = 0x1FF 853 ; HASWELL-NEXT: # sched: [1:0.25] 854 ; HASWELL-NEXT: addw $511, %di # imm = 0x1FF 855 ; HASWELL-NEXT: # sched: [1:0.25] 856 ; HASWELL-NEXT: addw $511, (%rsi) # imm = 0x1FF 857 ; HASWELL-NEXT: # sched: [7:1.00] 858 ; HASWELL-NEXT: addw $7, %di # sched: [1:0.25] 859 ; HASWELL-NEXT: addw $7, (%rsi) # sched: [7:1.00] 860 ; HASWELL-NEXT: addw %dx, %di # sched: [1:0.25] 861 ; HASWELL-NEXT: addw %di, (%rsi) # sched: [7:1.00] 862 ; HASWELL-NEXT: addw (%rsi), %di # sched: [6:0.50] 863 ; HASWELL-NEXT: #NO_APP 864 ; HASWELL-NEXT: retq # sched: [7:1.00] 865 ; 866 ; BROADWELL-LABEL: test_add_16: 867 ; BROADWELL: # %bb.0: 868 ; BROADWELL-NEXT: #APP 869 ; BROADWELL-NEXT: addw $511, %ax # imm = 0x1FF 870 ; BROADWELL-NEXT: # sched: [1:0.25] 871 ; BROADWELL-NEXT: addw $511, %di # imm = 0x1FF 872 ; BROADWELL-NEXT: # sched: [1:0.25] 873 ; BROADWELL-NEXT: addw $511, (%rsi) # imm = 0x1FF 874 ; BROADWELL-NEXT: # sched: [7:1.00] 875 ; BROADWELL-NEXT: addw $7, %di # sched: [1:0.25] 876 ; BROADWELL-NEXT: addw $7, (%rsi) # sched: [7:1.00] 877 ; BROADWELL-NEXT: addw %dx, %di # sched: [1:0.25] 878 ; BROADWELL-NEXT: addw %di, (%rsi) # sched: [7:1.00] 879 ; BROADWELL-NEXT: addw (%rsi), %di # sched: [6:0.50] 880 ; BROADWELL-NEXT: #NO_APP 881 ; BROADWELL-NEXT: retq # sched: [7:1.00] 882 ; 883 ; SKYLAKE-LABEL: test_add_16: 884 ; SKYLAKE: # %bb.0: 885 ; SKYLAKE-NEXT: #APP 886 ; SKYLAKE-NEXT: addw $511, %ax # imm = 0x1FF 887 ; SKYLAKE-NEXT: # sched: [1:0.25] 888 ; SKYLAKE-NEXT: addw $511, %di # imm = 0x1FF 889 ; SKYLAKE-NEXT: # sched: [1:0.25] 890 ; SKYLAKE-NEXT: addw $511, (%rsi) # imm = 0x1FF 891 ; SKYLAKE-NEXT: # sched: [7:1.00] 892 ; SKYLAKE-NEXT: addw $7, %di # sched: [1:0.25] 893 ; SKYLAKE-NEXT: addw $7, (%rsi) # sched: [7:1.00] 894 ; SKYLAKE-NEXT: addw %dx, %di # sched: [1:0.25] 895 ; SKYLAKE-NEXT: addw %di, (%rsi) # sched: [7:1.00] 896 ; SKYLAKE-NEXT: addw (%rsi), %di # sched: [6:0.50] 897 ; SKYLAKE-NEXT: #NO_APP 898 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 899 ; 900 ; SKX-LABEL: test_add_16: 901 ; SKX: # %bb.0: 902 ; SKX-NEXT: #APP 903 ; SKX-NEXT: addw $511, %ax # imm = 0x1FF 904 ; SKX-NEXT: # sched: [1:0.25] 905 ; SKX-NEXT: addw $511, %di # imm = 0x1FF 906 ; SKX-NEXT: # sched: [1:0.25] 907 ; SKX-NEXT: addw $511, (%rsi) # imm = 0x1FF 908 ; SKX-NEXT: # sched: [7:1.00] 909 ; SKX-NEXT: addw $7, %di # sched: [1:0.25] 910 ; SKX-NEXT: addw $7, (%rsi) # sched: [7:1.00] 911 ; SKX-NEXT: addw %dx, %di # sched: [1:0.25] 912 ; SKX-NEXT: addw %di, (%rsi) # sched: [7:1.00] 913 ; SKX-NEXT: addw (%rsi), %di # sched: [6:0.50] 914 ; SKX-NEXT: #NO_APP 915 ; SKX-NEXT: retq # sched: [7:1.00] 916 ; 917 ; BTVER2-LABEL: test_add_16: 918 ; BTVER2: # %bb.0: 919 ; BTVER2-NEXT: #APP 920 ; BTVER2-NEXT: addw $511, %ax # imm = 0x1FF 921 ; BTVER2-NEXT: # sched: [1:0.50] 922 ; BTVER2-NEXT: addw $511, %di # imm = 0x1FF 923 ; BTVER2-NEXT: # sched: [1:0.50] 924 ; BTVER2-NEXT: addw $511, (%rsi) # imm = 0x1FF 925 ; BTVER2-NEXT: # sched: [5:1.00] 926 ; BTVER2-NEXT: addw $7, %di # sched: [1:0.50] 927 ; BTVER2-NEXT: addw $7, (%rsi) # sched: [5:1.00] 928 ; BTVER2-NEXT: addw %dx, %di # sched: [1:0.50] 929 ; BTVER2-NEXT: addw %di, (%rsi) # sched: [5:1.00] 930 ; BTVER2-NEXT: addw (%rsi), %di # sched: [4:1.00] 931 ; BTVER2-NEXT: #NO_APP 932 ; BTVER2-NEXT: retq # sched: [4:1.00] 933 ; 934 ; ZNVER1-LABEL: test_add_16: 935 ; ZNVER1: # %bb.0: 936 ; ZNVER1-NEXT: #APP 937 ; ZNVER1-NEXT: addw $511, %ax # imm = 0x1FF 938 ; ZNVER1-NEXT: # sched: [1:0.25] 939 ; ZNVER1-NEXT: addw $511, %di # imm = 0x1FF 940 ; ZNVER1-NEXT: # sched: [1:0.25] 941 ; ZNVER1-NEXT: addw $511, (%rsi) # imm = 0x1FF 942 ; ZNVER1-NEXT: # sched: [5:0.50] 943 ; ZNVER1-NEXT: addw $7, %di # sched: [1:0.25] 944 ; ZNVER1-NEXT: addw $7, (%rsi) # sched: [5:0.50] 945 ; ZNVER1-NEXT: addw %dx, %di # sched: [1:0.25] 946 ; ZNVER1-NEXT: addw %di, (%rsi) # sched: [5:0.50] 947 ; ZNVER1-NEXT: addw (%rsi), %di # sched: [5:0.50] 948 ; ZNVER1-NEXT: #NO_APP 949 ; ZNVER1-NEXT: retq # sched: [1:0.50] 950 tail call void asm "addw $3, %AX \0A\09 addw $3, $0 \0A\09 addw $3, $2 \0A\09 addw $4, $0 \0A\09 addw $4, $2 \0A\09 addw $1, $0 \0A\09 addw $0, $2 \0A\09 addw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 951 ret void 952 } 953 define void @test_add_32(i32 %a0, i32* %a1, i32 %a2) optsize { 954 ; GENERIC-LABEL: test_add_32: 955 ; GENERIC: # %bb.0: 956 ; GENERIC-NEXT: #APP 957 ; GENERIC-NEXT: addl $665536, %eax # imm = 0xA27C0 958 ; GENERIC-NEXT: # sched: [1:0.33] 959 ; GENERIC-NEXT: addl $665536, %edi # imm = 0xA27C0 960 ; GENERIC-NEXT: # sched: [1:0.33] 961 ; GENERIC-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 962 ; GENERIC-NEXT: # sched: [7:1.00] 963 ; GENERIC-NEXT: addl $7, %edi # sched: [1:0.33] 964 ; GENERIC-NEXT: addl $7, (%rsi) # sched: [7:1.00] 965 ; GENERIC-NEXT: addl %edx, %edi # sched: [1:0.33] 966 ; GENERIC-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 967 ; GENERIC-NEXT: addl (%rsi), %edi # sched: [6:0.50] 968 ; GENERIC-NEXT: #NO_APP 969 ; GENERIC-NEXT: retq # sched: [1:1.00] 970 ; 971 ; ATOM-LABEL: test_add_32: 972 ; ATOM: # %bb.0: 973 ; ATOM-NEXT: #APP 974 ; ATOM-NEXT: addl $665536, %eax # imm = 0xA27C0 975 ; ATOM-NEXT: # sched: [1:0.50] 976 ; ATOM-NEXT: addl $665536, %edi # imm = 0xA27C0 977 ; ATOM-NEXT: # sched: [1:0.50] 978 ; ATOM-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 979 ; ATOM-NEXT: # sched: [1:1.00] 980 ; ATOM-NEXT: addl $7, %edi # sched: [1:0.50] 981 ; ATOM-NEXT: addl $7, (%rsi) # sched: [1:1.00] 982 ; ATOM-NEXT: addl %edx, %edi # sched: [1:0.50] 983 ; ATOM-NEXT: addl %edi, (%rsi) # sched: [1:1.00] 984 ; ATOM-NEXT: addl (%rsi), %edi # sched: [1:1.00] 985 ; ATOM-NEXT: #NO_APP 986 ; ATOM-NEXT: retq # sched: [79:39.50] 987 ; 988 ; SLM-LABEL: test_add_32: 989 ; SLM: # %bb.0: 990 ; SLM-NEXT: #APP 991 ; SLM-NEXT: addl $665536, %eax # imm = 0xA27C0 992 ; SLM-NEXT: # sched: [1:0.50] 993 ; SLM-NEXT: addl $665536, %edi # imm = 0xA27C0 994 ; SLM-NEXT: # sched: [1:0.50] 995 ; SLM-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 996 ; SLM-NEXT: # sched: [5:2.00] 997 ; SLM-NEXT: addl $7, %edi # sched: [1:0.50] 998 ; SLM-NEXT: addl $7, (%rsi) # sched: [5:2.00] 999 ; SLM-NEXT: addl %edx, %edi # sched: [1:0.50] 1000 ; SLM-NEXT: addl %edi, (%rsi) # sched: [5:2.00] 1001 ; SLM-NEXT: addl (%rsi), %edi # sched: [4:1.00] 1002 ; SLM-NEXT: #NO_APP 1003 ; SLM-NEXT: retq # sched: [4:1.00] 1004 ; 1005 ; SANDY-LABEL: test_add_32: 1006 ; SANDY: # %bb.0: 1007 ; SANDY-NEXT: #APP 1008 ; SANDY-NEXT: addl $665536, %eax # imm = 0xA27C0 1009 ; SANDY-NEXT: # sched: [1:0.33] 1010 ; SANDY-NEXT: addl $665536, %edi # imm = 0xA27C0 1011 ; SANDY-NEXT: # sched: [1:0.33] 1012 ; SANDY-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1013 ; SANDY-NEXT: # sched: [7:1.00] 1014 ; SANDY-NEXT: addl $7, %edi # sched: [1:0.33] 1015 ; SANDY-NEXT: addl $7, (%rsi) # sched: [7:1.00] 1016 ; SANDY-NEXT: addl %edx, %edi # sched: [1:0.33] 1017 ; SANDY-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 1018 ; SANDY-NEXT: addl (%rsi), %edi # sched: [6:0.50] 1019 ; SANDY-NEXT: #NO_APP 1020 ; SANDY-NEXT: retq # sched: [1:1.00] 1021 ; 1022 ; HASWELL-LABEL: test_add_32: 1023 ; HASWELL: # %bb.0: 1024 ; HASWELL-NEXT: #APP 1025 ; HASWELL-NEXT: addl $665536, %eax # imm = 0xA27C0 1026 ; HASWELL-NEXT: # sched: [1:0.25] 1027 ; HASWELL-NEXT: addl $665536, %edi # imm = 0xA27C0 1028 ; HASWELL-NEXT: # sched: [1:0.25] 1029 ; HASWELL-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1030 ; HASWELL-NEXT: # sched: [7:1.00] 1031 ; HASWELL-NEXT: addl $7, %edi # sched: [1:0.25] 1032 ; HASWELL-NEXT: addl $7, (%rsi) # sched: [7:1.00] 1033 ; HASWELL-NEXT: addl %edx, %edi # sched: [1:0.25] 1034 ; HASWELL-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 1035 ; HASWELL-NEXT: addl (%rsi), %edi # sched: [6:0.50] 1036 ; HASWELL-NEXT: #NO_APP 1037 ; HASWELL-NEXT: retq # sched: [7:1.00] 1038 ; 1039 ; BROADWELL-LABEL: test_add_32: 1040 ; BROADWELL: # %bb.0: 1041 ; BROADWELL-NEXT: #APP 1042 ; BROADWELL-NEXT: addl $665536, %eax # imm = 0xA27C0 1043 ; BROADWELL-NEXT: # sched: [1:0.25] 1044 ; BROADWELL-NEXT: addl $665536, %edi # imm = 0xA27C0 1045 ; BROADWELL-NEXT: # sched: [1:0.25] 1046 ; BROADWELL-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1047 ; BROADWELL-NEXT: # sched: [7:1.00] 1048 ; BROADWELL-NEXT: addl $7, %edi # sched: [1:0.25] 1049 ; BROADWELL-NEXT: addl $7, (%rsi) # sched: [7:1.00] 1050 ; BROADWELL-NEXT: addl %edx, %edi # sched: [1:0.25] 1051 ; BROADWELL-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 1052 ; BROADWELL-NEXT: addl (%rsi), %edi # sched: [6:0.50] 1053 ; BROADWELL-NEXT: #NO_APP 1054 ; BROADWELL-NEXT: retq # sched: [7:1.00] 1055 ; 1056 ; SKYLAKE-LABEL: test_add_32: 1057 ; SKYLAKE: # %bb.0: 1058 ; SKYLAKE-NEXT: #APP 1059 ; SKYLAKE-NEXT: addl $665536, %eax # imm = 0xA27C0 1060 ; SKYLAKE-NEXT: # sched: [1:0.25] 1061 ; SKYLAKE-NEXT: addl $665536, %edi # imm = 0xA27C0 1062 ; SKYLAKE-NEXT: # sched: [1:0.25] 1063 ; SKYLAKE-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1064 ; SKYLAKE-NEXT: # sched: [7:1.00] 1065 ; SKYLAKE-NEXT: addl $7, %edi # sched: [1:0.25] 1066 ; SKYLAKE-NEXT: addl $7, (%rsi) # sched: [7:1.00] 1067 ; SKYLAKE-NEXT: addl %edx, %edi # sched: [1:0.25] 1068 ; SKYLAKE-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 1069 ; SKYLAKE-NEXT: addl (%rsi), %edi # sched: [6:0.50] 1070 ; SKYLAKE-NEXT: #NO_APP 1071 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 1072 ; 1073 ; SKX-LABEL: test_add_32: 1074 ; SKX: # %bb.0: 1075 ; SKX-NEXT: #APP 1076 ; SKX-NEXT: addl $665536, %eax # imm = 0xA27C0 1077 ; SKX-NEXT: # sched: [1:0.25] 1078 ; SKX-NEXT: addl $665536, %edi # imm = 0xA27C0 1079 ; SKX-NEXT: # sched: [1:0.25] 1080 ; SKX-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1081 ; SKX-NEXT: # sched: [7:1.00] 1082 ; SKX-NEXT: addl $7, %edi # sched: [1:0.25] 1083 ; SKX-NEXT: addl $7, (%rsi) # sched: [7:1.00] 1084 ; SKX-NEXT: addl %edx, %edi # sched: [1:0.25] 1085 ; SKX-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 1086 ; SKX-NEXT: addl (%rsi), %edi # sched: [6:0.50] 1087 ; SKX-NEXT: #NO_APP 1088 ; SKX-NEXT: retq # sched: [7:1.00] 1089 ; 1090 ; BTVER2-LABEL: test_add_32: 1091 ; BTVER2: # %bb.0: 1092 ; BTVER2-NEXT: #APP 1093 ; BTVER2-NEXT: addl $665536, %eax # imm = 0xA27C0 1094 ; BTVER2-NEXT: # sched: [1:0.50] 1095 ; BTVER2-NEXT: addl $665536, %edi # imm = 0xA27C0 1096 ; BTVER2-NEXT: # sched: [1:0.50] 1097 ; BTVER2-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1098 ; BTVER2-NEXT: # sched: [5:1.00] 1099 ; BTVER2-NEXT: addl $7, %edi # sched: [1:0.50] 1100 ; BTVER2-NEXT: addl $7, (%rsi) # sched: [5:1.00] 1101 ; BTVER2-NEXT: addl %edx, %edi # sched: [1:0.50] 1102 ; BTVER2-NEXT: addl %edi, (%rsi) # sched: [5:1.00] 1103 ; BTVER2-NEXT: addl (%rsi), %edi # sched: [4:1.00] 1104 ; BTVER2-NEXT: #NO_APP 1105 ; BTVER2-NEXT: retq # sched: [4:1.00] 1106 ; 1107 ; ZNVER1-LABEL: test_add_32: 1108 ; ZNVER1: # %bb.0: 1109 ; ZNVER1-NEXT: #APP 1110 ; ZNVER1-NEXT: addl $665536, %eax # imm = 0xA27C0 1111 ; ZNVER1-NEXT: # sched: [1:0.25] 1112 ; ZNVER1-NEXT: addl $665536, %edi # imm = 0xA27C0 1113 ; ZNVER1-NEXT: # sched: [1:0.25] 1114 ; ZNVER1-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1115 ; ZNVER1-NEXT: # sched: [5:0.50] 1116 ; ZNVER1-NEXT: addl $7, %edi # sched: [1:0.25] 1117 ; ZNVER1-NEXT: addl $7, (%rsi) # sched: [5:0.50] 1118 ; ZNVER1-NEXT: addl %edx, %edi # sched: [1:0.25] 1119 ; ZNVER1-NEXT: addl %edi, (%rsi) # sched: [5:0.50] 1120 ; ZNVER1-NEXT: addl (%rsi), %edi # sched: [5:0.50] 1121 ; ZNVER1-NEXT: #NO_APP 1122 ; ZNVER1-NEXT: retq # sched: [1:0.50] 1123 tail call void asm "addl $3, %EAX \0A\09 addl $3, $0 \0A\09 addl $3, $2 \0A\09 addl $4, $0 \0A\09 addl $4, $2 \0A\09 addl $1, $0 \0A\09 addl $0, $2 \0A\09 addl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 1124 ret void 1125 } 1126 define void @test_add_64(i64 %a0, i64* %a1, i64 %a2) optsize { 1127 ; GENERIC-LABEL: test_add_64: 1128 ; GENERIC: # %bb.0: 1129 ; GENERIC-NEXT: #APP 1130 ; GENERIC-NEXT: addq $665536, %rax # imm = 0xA27C0 1131 ; GENERIC-NEXT: # sched: [1:0.33] 1132 ; GENERIC-NEXT: addq $665536, %rdi # imm = 0xA27C0 1133 ; GENERIC-NEXT: # sched: [1:0.33] 1134 ; GENERIC-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1135 ; GENERIC-NEXT: # sched: [7:1.00] 1136 ; GENERIC-NEXT: addq $7, %rdi # sched: [1:0.33] 1137 ; GENERIC-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1138 ; GENERIC-NEXT: addq %rdx, %rdi # sched: [1:0.33] 1139 ; GENERIC-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1140 ; GENERIC-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1141 ; GENERIC-NEXT: #NO_APP 1142 ; GENERIC-NEXT: retq # sched: [1:1.00] 1143 ; 1144 ; ATOM-LABEL: test_add_64: 1145 ; ATOM: # %bb.0: 1146 ; ATOM-NEXT: #APP 1147 ; ATOM-NEXT: addq $665536, %rax # imm = 0xA27C0 1148 ; ATOM-NEXT: # sched: [1:0.50] 1149 ; ATOM-NEXT: addq $665536, %rdi # imm = 0xA27C0 1150 ; ATOM-NEXT: # sched: [1:0.50] 1151 ; ATOM-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1152 ; ATOM-NEXT: # sched: [1:1.00] 1153 ; ATOM-NEXT: addq $7, %rdi # sched: [1:0.50] 1154 ; ATOM-NEXT: addq $7, (%rsi) # sched: [1:1.00] 1155 ; ATOM-NEXT: addq %rdx, %rdi # sched: [1:0.50] 1156 ; ATOM-NEXT: addq %rdi, (%rsi) # sched: [1:1.00] 1157 ; ATOM-NEXT: addq (%rsi), %rdi # sched: [1:1.00] 1158 ; ATOM-NEXT: #NO_APP 1159 ; ATOM-NEXT: retq # sched: [79:39.50] 1160 ; 1161 ; SLM-LABEL: test_add_64: 1162 ; SLM: # %bb.0: 1163 ; SLM-NEXT: #APP 1164 ; SLM-NEXT: addq $665536, %rax # imm = 0xA27C0 1165 ; SLM-NEXT: # sched: [1:0.50] 1166 ; SLM-NEXT: addq $665536, %rdi # imm = 0xA27C0 1167 ; SLM-NEXT: # sched: [1:0.50] 1168 ; SLM-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1169 ; SLM-NEXT: # sched: [5:2.00] 1170 ; SLM-NEXT: addq $7, %rdi # sched: [1:0.50] 1171 ; SLM-NEXT: addq $7, (%rsi) # sched: [5:2.00] 1172 ; SLM-NEXT: addq %rdx, %rdi # sched: [1:0.50] 1173 ; SLM-NEXT: addq %rdi, (%rsi) # sched: [5:2.00] 1174 ; SLM-NEXT: addq (%rsi), %rdi # sched: [4:1.00] 1175 ; SLM-NEXT: #NO_APP 1176 ; SLM-NEXT: retq # sched: [4:1.00] 1177 ; 1178 ; SANDY-LABEL: test_add_64: 1179 ; SANDY: # %bb.0: 1180 ; SANDY-NEXT: #APP 1181 ; SANDY-NEXT: addq $665536, %rax # imm = 0xA27C0 1182 ; SANDY-NEXT: # sched: [1:0.33] 1183 ; SANDY-NEXT: addq $665536, %rdi # imm = 0xA27C0 1184 ; SANDY-NEXT: # sched: [1:0.33] 1185 ; SANDY-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1186 ; SANDY-NEXT: # sched: [7:1.00] 1187 ; SANDY-NEXT: addq $7, %rdi # sched: [1:0.33] 1188 ; SANDY-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1189 ; SANDY-NEXT: addq %rdx, %rdi # sched: [1:0.33] 1190 ; SANDY-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1191 ; SANDY-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1192 ; SANDY-NEXT: #NO_APP 1193 ; SANDY-NEXT: retq # sched: [1:1.00] 1194 ; 1195 ; HASWELL-LABEL: test_add_64: 1196 ; HASWELL: # %bb.0: 1197 ; HASWELL-NEXT: #APP 1198 ; HASWELL-NEXT: addq $665536, %rax # imm = 0xA27C0 1199 ; HASWELL-NEXT: # sched: [1:0.25] 1200 ; HASWELL-NEXT: addq $665536, %rdi # imm = 0xA27C0 1201 ; HASWELL-NEXT: # sched: [1:0.25] 1202 ; HASWELL-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1203 ; HASWELL-NEXT: # sched: [7:1.00] 1204 ; HASWELL-NEXT: addq $7, %rdi # sched: [1:0.25] 1205 ; HASWELL-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1206 ; HASWELL-NEXT: addq %rdx, %rdi # sched: [1:0.25] 1207 ; HASWELL-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1208 ; HASWELL-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1209 ; HASWELL-NEXT: #NO_APP 1210 ; HASWELL-NEXT: retq # sched: [7:1.00] 1211 ; 1212 ; BROADWELL-LABEL: test_add_64: 1213 ; BROADWELL: # %bb.0: 1214 ; BROADWELL-NEXT: #APP 1215 ; BROADWELL-NEXT: addq $665536, %rax # imm = 0xA27C0 1216 ; BROADWELL-NEXT: # sched: [1:0.25] 1217 ; BROADWELL-NEXT: addq $665536, %rdi # imm = 0xA27C0 1218 ; BROADWELL-NEXT: # sched: [1:0.25] 1219 ; BROADWELL-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1220 ; BROADWELL-NEXT: # sched: [7:1.00] 1221 ; BROADWELL-NEXT: addq $7, %rdi # sched: [1:0.25] 1222 ; BROADWELL-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1223 ; BROADWELL-NEXT: addq %rdx, %rdi # sched: [1:0.25] 1224 ; BROADWELL-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1225 ; BROADWELL-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1226 ; BROADWELL-NEXT: #NO_APP 1227 ; BROADWELL-NEXT: retq # sched: [7:1.00] 1228 ; 1229 ; SKYLAKE-LABEL: test_add_64: 1230 ; SKYLAKE: # %bb.0: 1231 ; SKYLAKE-NEXT: #APP 1232 ; SKYLAKE-NEXT: addq $665536, %rax # imm = 0xA27C0 1233 ; SKYLAKE-NEXT: # sched: [1:0.25] 1234 ; SKYLAKE-NEXT: addq $665536, %rdi # imm = 0xA27C0 1235 ; SKYLAKE-NEXT: # sched: [1:0.25] 1236 ; SKYLAKE-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1237 ; SKYLAKE-NEXT: # sched: [7:1.00] 1238 ; SKYLAKE-NEXT: addq $7, %rdi # sched: [1:0.25] 1239 ; SKYLAKE-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1240 ; SKYLAKE-NEXT: addq %rdx, %rdi # sched: [1:0.25] 1241 ; SKYLAKE-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1242 ; SKYLAKE-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1243 ; SKYLAKE-NEXT: #NO_APP 1244 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 1245 ; 1246 ; SKX-LABEL: test_add_64: 1247 ; SKX: # %bb.0: 1248 ; SKX-NEXT: #APP 1249 ; SKX-NEXT: addq $665536, %rax # imm = 0xA27C0 1250 ; SKX-NEXT: # sched: [1:0.25] 1251 ; SKX-NEXT: addq $665536, %rdi # imm = 0xA27C0 1252 ; SKX-NEXT: # sched: [1:0.25] 1253 ; SKX-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1254 ; SKX-NEXT: # sched: [7:1.00] 1255 ; SKX-NEXT: addq $7, %rdi # sched: [1:0.25] 1256 ; SKX-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1257 ; SKX-NEXT: addq %rdx, %rdi # sched: [1:0.25] 1258 ; SKX-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1259 ; SKX-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1260 ; SKX-NEXT: #NO_APP 1261 ; SKX-NEXT: retq # sched: [7:1.00] 1262 ; 1263 ; BTVER2-LABEL: test_add_64: 1264 ; BTVER2: # %bb.0: 1265 ; BTVER2-NEXT: #APP 1266 ; BTVER2-NEXT: addq $665536, %rax # imm = 0xA27C0 1267 ; BTVER2-NEXT: # sched: [1:0.50] 1268 ; BTVER2-NEXT: addq $665536, %rdi # imm = 0xA27C0 1269 ; BTVER2-NEXT: # sched: [1:0.50] 1270 ; BTVER2-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1271 ; BTVER2-NEXT: # sched: [5:1.00] 1272 ; BTVER2-NEXT: addq $7, %rdi # sched: [1:0.50] 1273 ; BTVER2-NEXT: addq $7, (%rsi) # sched: [5:1.00] 1274 ; BTVER2-NEXT: addq %rdx, %rdi # sched: [1:0.50] 1275 ; BTVER2-NEXT: addq %rdi, (%rsi) # sched: [5:1.00] 1276 ; BTVER2-NEXT: addq (%rsi), %rdi # sched: [4:1.00] 1277 ; BTVER2-NEXT: #NO_APP 1278 ; BTVER2-NEXT: retq # sched: [4:1.00] 1279 ; 1280 ; ZNVER1-LABEL: test_add_64: 1281 ; ZNVER1: # %bb.0: 1282 ; ZNVER1-NEXT: #APP 1283 ; ZNVER1-NEXT: addq $665536, %rax # imm = 0xA27C0 1284 ; ZNVER1-NEXT: # sched: [1:0.25] 1285 ; ZNVER1-NEXT: addq $665536, %rdi # imm = 0xA27C0 1286 ; ZNVER1-NEXT: # sched: [1:0.25] 1287 ; ZNVER1-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1288 ; ZNVER1-NEXT: # sched: [5:0.50] 1289 ; ZNVER1-NEXT: addq $7, %rdi # sched: [1:0.25] 1290 ; ZNVER1-NEXT: addq $7, (%rsi) # sched: [5:0.50] 1291 ; ZNVER1-NEXT: addq %rdx, %rdi # sched: [1:0.25] 1292 ; ZNVER1-NEXT: addq %rdi, (%rsi) # sched: [5:0.50] 1293 ; ZNVER1-NEXT: addq (%rsi), %rdi # sched: [5:0.50] 1294 ; ZNVER1-NEXT: #NO_APP 1295 ; ZNVER1-NEXT: retq # sched: [1:0.50] 1296 tail call void asm "addq $3, %RAX \0A\09 addq $3, $0 \0A\09 addq $3, $2 \0A\09 addq $4, $0 \0A\09 addq $4, $2 \0A\09 addq $1, $0 \0A\09 addq $0, $2 \0A\09 addq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 1297 ret void 1298 } 1299 1300 define void @test_and_8(i8 %a0, i8* %a1, i8 %a2) optsize { 1301 ; GENERIC-LABEL: test_and_8: 1302 ; GENERIC: # %bb.0: 1303 ; GENERIC-NEXT: #APP 1304 ; GENERIC-NEXT: andb $7, %al # sched: [1:0.33] 1305 ; GENERIC-NEXT: andb $7, %dil # sched: [1:0.33] 1306 ; GENERIC-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1307 ; GENERIC-NEXT: andb %dl, %dil # sched: [1:0.33] 1308 ; GENERIC-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1309 ; GENERIC-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1310 ; GENERIC-NEXT: #NO_APP 1311 ; GENERIC-NEXT: retq # sched: [1:1.00] 1312 ; 1313 ; ATOM-LABEL: test_and_8: 1314 ; ATOM: # %bb.0: 1315 ; ATOM-NEXT: #APP 1316 ; ATOM-NEXT: andb $7, %al # sched: [1:0.50] 1317 ; ATOM-NEXT: andb $7, %dil # sched: [1:0.50] 1318 ; ATOM-NEXT: andb $7, (%rsi) # sched: [1:1.00] 1319 ; ATOM-NEXT: andb %dl, %dil # sched: [1:0.50] 1320 ; ATOM-NEXT: andb %dil, (%rsi) # sched: [1:1.00] 1321 ; ATOM-NEXT: andb (%rsi), %dil # sched: [1:1.00] 1322 ; ATOM-NEXT: #NO_APP 1323 ; ATOM-NEXT: retq # sched: [79:39.50] 1324 ; 1325 ; SLM-LABEL: test_and_8: 1326 ; SLM: # %bb.0: 1327 ; SLM-NEXT: #APP 1328 ; SLM-NEXT: andb $7, %al # sched: [1:0.50] 1329 ; SLM-NEXT: andb $7, %dil # sched: [1:0.50] 1330 ; SLM-NEXT: andb $7, (%rsi) # sched: [5:2.00] 1331 ; SLM-NEXT: andb %dl, %dil # sched: [1:0.50] 1332 ; SLM-NEXT: andb %dil, (%rsi) # sched: [5:2.00] 1333 ; SLM-NEXT: andb (%rsi), %dil # sched: [4:1.00] 1334 ; SLM-NEXT: #NO_APP 1335 ; SLM-NEXT: retq # sched: [4:1.00] 1336 ; 1337 ; SANDY-LABEL: test_and_8: 1338 ; SANDY: # %bb.0: 1339 ; SANDY-NEXT: #APP 1340 ; SANDY-NEXT: andb $7, %al # sched: [1:0.33] 1341 ; SANDY-NEXT: andb $7, %dil # sched: [1:0.33] 1342 ; SANDY-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1343 ; SANDY-NEXT: andb %dl, %dil # sched: [1:0.33] 1344 ; SANDY-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1345 ; SANDY-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1346 ; SANDY-NEXT: #NO_APP 1347 ; SANDY-NEXT: retq # sched: [1:1.00] 1348 ; 1349 ; HASWELL-LABEL: test_and_8: 1350 ; HASWELL: # %bb.0: 1351 ; HASWELL-NEXT: #APP 1352 ; HASWELL-NEXT: andb $7, %al # sched: [1:0.25] 1353 ; HASWELL-NEXT: andb $7, %dil # sched: [1:0.25] 1354 ; HASWELL-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1355 ; HASWELL-NEXT: andb %dl, %dil # sched: [1:0.25] 1356 ; HASWELL-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1357 ; HASWELL-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1358 ; HASWELL-NEXT: #NO_APP 1359 ; HASWELL-NEXT: retq # sched: [7:1.00] 1360 ; 1361 ; BROADWELL-LABEL: test_and_8: 1362 ; BROADWELL: # %bb.0: 1363 ; BROADWELL-NEXT: #APP 1364 ; BROADWELL-NEXT: andb $7, %al # sched: [1:0.25] 1365 ; BROADWELL-NEXT: andb $7, %dil # sched: [1:0.25] 1366 ; BROADWELL-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1367 ; BROADWELL-NEXT: andb %dl, %dil # sched: [1:0.25] 1368 ; BROADWELL-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1369 ; BROADWELL-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1370 ; BROADWELL-NEXT: #NO_APP 1371 ; BROADWELL-NEXT: retq # sched: [7:1.00] 1372 ; 1373 ; SKYLAKE-LABEL: test_and_8: 1374 ; SKYLAKE: # %bb.0: 1375 ; SKYLAKE-NEXT: #APP 1376 ; SKYLAKE-NEXT: andb $7, %al # sched: [1:0.25] 1377 ; SKYLAKE-NEXT: andb $7, %dil # sched: [1:0.25] 1378 ; SKYLAKE-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1379 ; SKYLAKE-NEXT: andb %dl, %dil # sched: [1:0.25] 1380 ; SKYLAKE-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1381 ; SKYLAKE-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1382 ; SKYLAKE-NEXT: #NO_APP 1383 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 1384 ; 1385 ; SKX-LABEL: test_and_8: 1386 ; SKX: # %bb.0: 1387 ; SKX-NEXT: #APP 1388 ; SKX-NEXT: andb $7, %al # sched: [1:0.25] 1389 ; SKX-NEXT: andb $7, %dil # sched: [1:0.25] 1390 ; SKX-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1391 ; SKX-NEXT: andb %dl, %dil # sched: [1:0.25] 1392 ; SKX-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1393 ; SKX-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1394 ; SKX-NEXT: #NO_APP 1395 ; SKX-NEXT: retq # sched: [7:1.00] 1396 ; 1397 ; BTVER2-LABEL: test_and_8: 1398 ; BTVER2: # %bb.0: 1399 ; BTVER2-NEXT: #APP 1400 ; BTVER2-NEXT: andb $7, %al # sched: [1:0.50] 1401 ; BTVER2-NEXT: andb $7, %dil # sched: [1:0.50] 1402 ; BTVER2-NEXT: andb $7, (%rsi) # sched: [5:1.00] 1403 ; BTVER2-NEXT: andb %dl, %dil # sched: [1:0.50] 1404 ; BTVER2-NEXT: andb %dil, (%rsi) # sched: [5:1.00] 1405 ; BTVER2-NEXT: andb (%rsi), %dil # sched: [4:1.00] 1406 ; BTVER2-NEXT: #NO_APP 1407 ; BTVER2-NEXT: retq # sched: [4:1.00] 1408 ; 1409 ; ZNVER1-LABEL: test_and_8: 1410 ; ZNVER1: # %bb.0: 1411 ; ZNVER1-NEXT: #APP 1412 ; ZNVER1-NEXT: andb $7, %al # sched: [1:0.25] 1413 ; ZNVER1-NEXT: andb $7, %dil # sched: [1:0.25] 1414 ; ZNVER1-NEXT: andb $7, (%rsi) # sched: [5:0.50] 1415 ; ZNVER1-NEXT: andb %dl, %dil # sched: [1:0.25] 1416 ; ZNVER1-NEXT: andb %dil, (%rsi) # sched: [5:0.50] 1417 ; ZNVER1-NEXT: andb (%rsi), %dil # sched: [5:0.50] 1418 ; ZNVER1-NEXT: #NO_APP 1419 ; ZNVER1-NEXT: retq # sched: [1:0.50] 1420 tail call void asm "andb $3, %AL \0A\09 andb $3, $0 \0A\09 andb $3, $2 \0A\09 andb $1, $0 \0A\09 andb $0, $2 \0A\09 andb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 1421 ret void 1422 } 1423 define void @test_and_16(i16 %a0, i16* %a1, i16 %a2) optsize { 1424 ; GENERIC-LABEL: test_and_16: 1425 ; GENERIC: # %bb.0: 1426 ; GENERIC-NEXT: #APP 1427 ; GENERIC-NEXT: andw $511, %ax # imm = 0x1FF 1428 ; GENERIC-NEXT: # sched: [1:0.33] 1429 ; GENERIC-NEXT: andw $511, %di # imm = 0x1FF 1430 ; GENERIC-NEXT: # sched: [1:0.33] 1431 ; GENERIC-NEXT: andw $511, (%rsi) # imm = 0x1FF 1432 ; GENERIC-NEXT: # sched: [7:1.00] 1433 ; GENERIC-NEXT: andw $7, %di # sched: [1:0.33] 1434 ; GENERIC-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1435 ; GENERIC-NEXT: andw %dx, %di # sched: [1:0.33] 1436 ; GENERIC-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1437 ; GENERIC-NEXT: andw (%rsi), %di # sched: [6:0.50] 1438 ; GENERIC-NEXT: #NO_APP 1439 ; GENERIC-NEXT: retq # sched: [1:1.00] 1440 ; 1441 ; ATOM-LABEL: test_and_16: 1442 ; ATOM: # %bb.0: 1443 ; ATOM-NEXT: #APP 1444 ; ATOM-NEXT: andw $511, %ax # imm = 0x1FF 1445 ; ATOM-NEXT: # sched: [1:0.50] 1446 ; ATOM-NEXT: andw $511, %di # imm = 0x1FF 1447 ; ATOM-NEXT: # sched: [1:0.50] 1448 ; ATOM-NEXT: andw $511, (%rsi) # imm = 0x1FF 1449 ; ATOM-NEXT: # sched: [1:1.00] 1450 ; ATOM-NEXT: andw $7, %di # sched: [1:0.50] 1451 ; ATOM-NEXT: andw $7, (%rsi) # sched: [1:1.00] 1452 ; ATOM-NEXT: andw %dx, %di # sched: [1:0.50] 1453 ; ATOM-NEXT: andw %di, (%rsi) # sched: [1:1.00] 1454 ; ATOM-NEXT: andw (%rsi), %di # sched: [1:1.00] 1455 ; ATOM-NEXT: #NO_APP 1456 ; ATOM-NEXT: retq # sched: [79:39.50] 1457 ; 1458 ; SLM-LABEL: test_and_16: 1459 ; SLM: # %bb.0: 1460 ; SLM-NEXT: #APP 1461 ; SLM-NEXT: andw $511, %ax # imm = 0x1FF 1462 ; SLM-NEXT: # sched: [1:0.50] 1463 ; SLM-NEXT: andw $511, %di # imm = 0x1FF 1464 ; SLM-NEXT: # sched: [1:0.50] 1465 ; SLM-NEXT: andw $511, (%rsi) # imm = 0x1FF 1466 ; SLM-NEXT: # sched: [5:2.00] 1467 ; SLM-NEXT: andw $7, %di # sched: [1:0.50] 1468 ; SLM-NEXT: andw $7, (%rsi) # sched: [5:2.00] 1469 ; SLM-NEXT: andw %dx, %di # sched: [1:0.50] 1470 ; SLM-NEXT: andw %di, (%rsi) # sched: [5:2.00] 1471 ; SLM-NEXT: andw (%rsi), %di # sched: [4:1.00] 1472 ; SLM-NEXT: #NO_APP 1473 ; SLM-NEXT: retq # sched: [4:1.00] 1474 ; 1475 ; SANDY-LABEL: test_and_16: 1476 ; SANDY: # %bb.0: 1477 ; SANDY-NEXT: #APP 1478 ; SANDY-NEXT: andw $511, %ax # imm = 0x1FF 1479 ; SANDY-NEXT: # sched: [1:0.33] 1480 ; SANDY-NEXT: andw $511, %di # imm = 0x1FF 1481 ; SANDY-NEXT: # sched: [1:0.33] 1482 ; SANDY-NEXT: andw $511, (%rsi) # imm = 0x1FF 1483 ; SANDY-NEXT: # sched: [7:1.00] 1484 ; SANDY-NEXT: andw $7, %di # sched: [1:0.33] 1485 ; SANDY-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1486 ; SANDY-NEXT: andw %dx, %di # sched: [1:0.33] 1487 ; SANDY-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1488 ; SANDY-NEXT: andw (%rsi), %di # sched: [6:0.50] 1489 ; SANDY-NEXT: #NO_APP 1490 ; SANDY-NEXT: retq # sched: [1:1.00] 1491 ; 1492 ; HASWELL-LABEL: test_and_16: 1493 ; HASWELL: # %bb.0: 1494 ; HASWELL-NEXT: #APP 1495 ; HASWELL-NEXT: andw $511, %ax # imm = 0x1FF 1496 ; HASWELL-NEXT: # sched: [1:0.25] 1497 ; HASWELL-NEXT: andw $511, %di # imm = 0x1FF 1498 ; HASWELL-NEXT: # sched: [1:0.25] 1499 ; HASWELL-NEXT: andw $511, (%rsi) # imm = 0x1FF 1500 ; HASWELL-NEXT: # sched: [7:1.00] 1501 ; HASWELL-NEXT: andw $7, %di # sched: [1:0.25] 1502 ; HASWELL-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1503 ; HASWELL-NEXT: andw %dx, %di # sched: [1:0.25] 1504 ; HASWELL-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1505 ; HASWELL-NEXT: andw (%rsi), %di # sched: [6:0.50] 1506 ; HASWELL-NEXT: #NO_APP 1507 ; HASWELL-NEXT: retq # sched: [7:1.00] 1508 ; 1509 ; BROADWELL-LABEL: test_and_16: 1510 ; BROADWELL: # %bb.0: 1511 ; BROADWELL-NEXT: #APP 1512 ; BROADWELL-NEXT: andw $511, %ax # imm = 0x1FF 1513 ; BROADWELL-NEXT: # sched: [1:0.25] 1514 ; BROADWELL-NEXT: andw $511, %di # imm = 0x1FF 1515 ; BROADWELL-NEXT: # sched: [1:0.25] 1516 ; BROADWELL-NEXT: andw $511, (%rsi) # imm = 0x1FF 1517 ; BROADWELL-NEXT: # sched: [7:1.00] 1518 ; BROADWELL-NEXT: andw $7, %di # sched: [1:0.25] 1519 ; BROADWELL-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1520 ; BROADWELL-NEXT: andw %dx, %di # sched: [1:0.25] 1521 ; BROADWELL-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1522 ; BROADWELL-NEXT: andw (%rsi), %di # sched: [6:0.50] 1523 ; BROADWELL-NEXT: #NO_APP 1524 ; BROADWELL-NEXT: retq # sched: [7:1.00] 1525 ; 1526 ; SKYLAKE-LABEL: test_and_16: 1527 ; SKYLAKE: # %bb.0: 1528 ; SKYLAKE-NEXT: #APP 1529 ; SKYLAKE-NEXT: andw $511, %ax # imm = 0x1FF 1530 ; SKYLAKE-NEXT: # sched: [1:0.25] 1531 ; SKYLAKE-NEXT: andw $511, %di # imm = 0x1FF 1532 ; SKYLAKE-NEXT: # sched: [1:0.25] 1533 ; SKYLAKE-NEXT: andw $511, (%rsi) # imm = 0x1FF 1534 ; SKYLAKE-NEXT: # sched: [7:1.00] 1535 ; SKYLAKE-NEXT: andw $7, %di # sched: [1:0.25] 1536 ; SKYLAKE-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1537 ; SKYLAKE-NEXT: andw %dx, %di # sched: [1:0.25] 1538 ; SKYLAKE-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1539 ; SKYLAKE-NEXT: andw (%rsi), %di # sched: [6:0.50] 1540 ; SKYLAKE-NEXT: #NO_APP 1541 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 1542 ; 1543 ; SKX-LABEL: test_and_16: 1544 ; SKX: # %bb.0: 1545 ; SKX-NEXT: #APP 1546 ; SKX-NEXT: andw $511, %ax # imm = 0x1FF 1547 ; SKX-NEXT: # sched: [1:0.25] 1548 ; SKX-NEXT: andw $511, %di # imm = 0x1FF 1549 ; SKX-NEXT: # sched: [1:0.25] 1550 ; SKX-NEXT: andw $511, (%rsi) # imm = 0x1FF 1551 ; SKX-NEXT: # sched: [7:1.00] 1552 ; SKX-NEXT: andw $7, %di # sched: [1:0.25] 1553 ; SKX-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1554 ; SKX-NEXT: andw %dx, %di # sched: [1:0.25] 1555 ; SKX-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1556 ; SKX-NEXT: andw (%rsi), %di # sched: [6:0.50] 1557 ; SKX-NEXT: #NO_APP 1558 ; SKX-NEXT: retq # sched: [7:1.00] 1559 ; 1560 ; BTVER2-LABEL: test_and_16: 1561 ; BTVER2: # %bb.0: 1562 ; BTVER2-NEXT: #APP 1563 ; BTVER2-NEXT: andw $511, %ax # imm = 0x1FF 1564 ; BTVER2-NEXT: # sched: [1:0.50] 1565 ; BTVER2-NEXT: andw $511, %di # imm = 0x1FF 1566 ; BTVER2-NEXT: # sched: [1:0.50] 1567 ; BTVER2-NEXT: andw $511, (%rsi) # imm = 0x1FF 1568 ; BTVER2-NEXT: # sched: [5:1.00] 1569 ; BTVER2-NEXT: andw $7, %di # sched: [1:0.50] 1570 ; BTVER2-NEXT: andw $7, (%rsi) # sched: [5:1.00] 1571 ; BTVER2-NEXT: andw %dx, %di # sched: [1:0.50] 1572 ; BTVER2-NEXT: andw %di, (%rsi) # sched: [5:1.00] 1573 ; BTVER2-NEXT: andw (%rsi), %di # sched: [4:1.00] 1574 ; BTVER2-NEXT: #NO_APP 1575 ; BTVER2-NEXT: retq # sched: [4:1.00] 1576 ; 1577 ; ZNVER1-LABEL: test_and_16: 1578 ; ZNVER1: # %bb.0: 1579 ; ZNVER1-NEXT: #APP 1580 ; ZNVER1-NEXT: andw $511, %ax # imm = 0x1FF 1581 ; ZNVER1-NEXT: # sched: [1:0.25] 1582 ; ZNVER1-NEXT: andw $511, %di # imm = 0x1FF 1583 ; ZNVER1-NEXT: # sched: [1:0.25] 1584 ; ZNVER1-NEXT: andw $511, (%rsi) # imm = 0x1FF 1585 ; ZNVER1-NEXT: # sched: [5:0.50] 1586 ; ZNVER1-NEXT: andw $7, %di # sched: [1:0.25] 1587 ; ZNVER1-NEXT: andw $7, (%rsi) # sched: [5:0.50] 1588 ; ZNVER1-NEXT: andw %dx, %di # sched: [1:0.25] 1589 ; ZNVER1-NEXT: andw %di, (%rsi) # sched: [5:0.50] 1590 ; ZNVER1-NEXT: andw (%rsi), %di # sched: [5:0.50] 1591 ; ZNVER1-NEXT: #NO_APP 1592 ; ZNVER1-NEXT: retq # sched: [1:0.50] 1593 tail call void asm "andw $3, %AX \0A\09 andw $3, $0 \0A\09 andw $3, $2 \0A\09 andw $4, $0 \0A\09 andw $4, $2 \0A\09 andw $1, $0 \0A\09 andw $0, $2 \0A\09 andw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 1594 ret void 1595 } 1596 define void @test_and_32(i32 %a0, i32* %a1, i32 %a2) optsize { 1597 ; GENERIC-LABEL: test_and_32: 1598 ; GENERIC: # %bb.0: 1599 ; GENERIC-NEXT: #APP 1600 ; GENERIC-NEXT: andl $665536, %eax # imm = 0xA27C0 1601 ; GENERIC-NEXT: # sched: [1:0.33] 1602 ; GENERIC-NEXT: andl $665536, %edi # imm = 0xA27C0 1603 ; GENERIC-NEXT: # sched: [1:0.33] 1604 ; GENERIC-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1605 ; GENERIC-NEXT: # sched: [7:1.00] 1606 ; GENERIC-NEXT: andl $7, %edi # sched: [1:0.33] 1607 ; GENERIC-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1608 ; GENERIC-NEXT: andl %edx, %edi # sched: [1:0.33] 1609 ; GENERIC-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1610 ; GENERIC-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1611 ; GENERIC-NEXT: #NO_APP 1612 ; GENERIC-NEXT: retq # sched: [1:1.00] 1613 ; 1614 ; ATOM-LABEL: test_and_32: 1615 ; ATOM: # %bb.0: 1616 ; ATOM-NEXT: #APP 1617 ; ATOM-NEXT: andl $665536, %eax # imm = 0xA27C0 1618 ; ATOM-NEXT: # sched: [1:0.50] 1619 ; ATOM-NEXT: andl $665536, %edi # imm = 0xA27C0 1620 ; ATOM-NEXT: # sched: [1:0.50] 1621 ; ATOM-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1622 ; ATOM-NEXT: # sched: [1:1.00] 1623 ; ATOM-NEXT: andl $7, %edi # sched: [1:0.50] 1624 ; ATOM-NEXT: andl $7, (%rsi) # sched: [1:1.00] 1625 ; ATOM-NEXT: andl %edx, %edi # sched: [1:0.50] 1626 ; ATOM-NEXT: andl %edi, (%rsi) # sched: [1:1.00] 1627 ; ATOM-NEXT: andl (%rsi), %edi # sched: [1:1.00] 1628 ; ATOM-NEXT: #NO_APP 1629 ; ATOM-NEXT: retq # sched: [79:39.50] 1630 ; 1631 ; SLM-LABEL: test_and_32: 1632 ; SLM: # %bb.0: 1633 ; SLM-NEXT: #APP 1634 ; SLM-NEXT: andl $665536, %eax # imm = 0xA27C0 1635 ; SLM-NEXT: # sched: [1:0.50] 1636 ; SLM-NEXT: andl $665536, %edi # imm = 0xA27C0 1637 ; SLM-NEXT: # sched: [1:0.50] 1638 ; SLM-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1639 ; SLM-NEXT: # sched: [5:2.00] 1640 ; SLM-NEXT: andl $7, %edi # sched: [1:0.50] 1641 ; SLM-NEXT: andl $7, (%rsi) # sched: [5:2.00] 1642 ; SLM-NEXT: andl %edx, %edi # sched: [1:0.50] 1643 ; SLM-NEXT: andl %edi, (%rsi) # sched: [5:2.00] 1644 ; SLM-NEXT: andl (%rsi), %edi # sched: [4:1.00] 1645 ; SLM-NEXT: #NO_APP 1646 ; SLM-NEXT: retq # sched: [4:1.00] 1647 ; 1648 ; SANDY-LABEL: test_and_32: 1649 ; SANDY: # %bb.0: 1650 ; SANDY-NEXT: #APP 1651 ; SANDY-NEXT: andl $665536, %eax # imm = 0xA27C0 1652 ; SANDY-NEXT: # sched: [1:0.33] 1653 ; SANDY-NEXT: andl $665536, %edi # imm = 0xA27C0 1654 ; SANDY-NEXT: # sched: [1:0.33] 1655 ; SANDY-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1656 ; SANDY-NEXT: # sched: [7:1.00] 1657 ; SANDY-NEXT: andl $7, %edi # sched: [1:0.33] 1658 ; SANDY-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1659 ; SANDY-NEXT: andl %edx, %edi # sched: [1:0.33] 1660 ; SANDY-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1661 ; SANDY-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1662 ; SANDY-NEXT: #NO_APP 1663 ; SANDY-NEXT: retq # sched: [1:1.00] 1664 ; 1665 ; HASWELL-LABEL: test_and_32: 1666 ; HASWELL: # %bb.0: 1667 ; HASWELL-NEXT: #APP 1668 ; HASWELL-NEXT: andl $665536, %eax # imm = 0xA27C0 1669 ; HASWELL-NEXT: # sched: [1:0.25] 1670 ; HASWELL-NEXT: andl $665536, %edi # imm = 0xA27C0 1671 ; HASWELL-NEXT: # sched: [1:0.25] 1672 ; HASWELL-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1673 ; HASWELL-NEXT: # sched: [7:1.00] 1674 ; HASWELL-NEXT: andl $7, %edi # sched: [1:0.25] 1675 ; HASWELL-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1676 ; HASWELL-NEXT: andl %edx, %edi # sched: [1:0.25] 1677 ; HASWELL-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1678 ; HASWELL-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1679 ; HASWELL-NEXT: #NO_APP 1680 ; HASWELL-NEXT: retq # sched: [7:1.00] 1681 ; 1682 ; BROADWELL-LABEL: test_and_32: 1683 ; BROADWELL: # %bb.0: 1684 ; BROADWELL-NEXT: #APP 1685 ; BROADWELL-NEXT: andl $665536, %eax # imm = 0xA27C0 1686 ; BROADWELL-NEXT: # sched: [1:0.25] 1687 ; BROADWELL-NEXT: andl $665536, %edi # imm = 0xA27C0 1688 ; BROADWELL-NEXT: # sched: [1:0.25] 1689 ; BROADWELL-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1690 ; BROADWELL-NEXT: # sched: [7:1.00] 1691 ; BROADWELL-NEXT: andl $7, %edi # sched: [1:0.25] 1692 ; BROADWELL-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1693 ; BROADWELL-NEXT: andl %edx, %edi # sched: [1:0.25] 1694 ; BROADWELL-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1695 ; BROADWELL-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1696 ; BROADWELL-NEXT: #NO_APP 1697 ; BROADWELL-NEXT: retq # sched: [7:1.00] 1698 ; 1699 ; SKYLAKE-LABEL: test_and_32: 1700 ; SKYLAKE: # %bb.0: 1701 ; SKYLAKE-NEXT: #APP 1702 ; SKYLAKE-NEXT: andl $665536, %eax # imm = 0xA27C0 1703 ; SKYLAKE-NEXT: # sched: [1:0.25] 1704 ; SKYLAKE-NEXT: andl $665536, %edi # imm = 0xA27C0 1705 ; SKYLAKE-NEXT: # sched: [1:0.25] 1706 ; SKYLAKE-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1707 ; SKYLAKE-NEXT: # sched: [7:1.00] 1708 ; SKYLAKE-NEXT: andl $7, %edi # sched: [1:0.25] 1709 ; SKYLAKE-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1710 ; SKYLAKE-NEXT: andl %edx, %edi # sched: [1:0.25] 1711 ; SKYLAKE-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1712 ; SKYLAKE-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1713 ; SKYLAKE-NEXT: #NO_APP 1714 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 1715 ; 1716 ; SKX-LABEL: test_and_32: 1717 ; SKX: # %bb.0: 1718 ; SKX-NEXT: #APP 1719 ; SKX-NEXT: andl $665536, %eax # imm = 0xA27C0 1720 ; SKX-NEXT: # sched: [1:0.25] 1721 ; SKX-NEXT: andl $665536, %edi # imm = 0xA27C0 1722 ; SKX-NEXT: # sched: [1:0.25] 1723 ; SKX-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1724 ; SKX-NEXT: # sched: [7:1.00] 1725 ; SKX-NEXT: andl $7, %edi # sched: [1:0.25] 1726 ; SKX-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1727 ; SKX-NEXT: andl %edx, %edi # sched: [1:0.25] 1728 ; SKX-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1729 ; SKX-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1730 ; SKX-NEXT: #NO_APP 1731 ; SKX-NEXT: retq # sched: [7:1.00] 1732 ; 1733 ; BTVER2-LABEL: test_and_32: 1734 ; BTVER2: # %bb.0: 1735 ; BTVER2-NEXT: #APP 1736 ; BTVER2-NEXT: andl $665536, %eax # imm = 0xA27C0 1737 ; BTVER2-NEXT: # sched: [1:0.50] 1738 ; BTVER2-NEXT: andl $665536, %edi # imm = 0xA27C0 1739 ; BTVER2-NEXT: # sched: [1:0.50] 1740 ; BTVER2-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1741 ; BTVER2-NEXT: # sched: [5:1.00] 1742 ; BTVER2-NEXT: andl $7, %edi # sched: [1:0.50] 1743 ; BTVER2-NEXT: andl $7, (%rsi) # sched: [5:1.00] 1744 ; BTVER2-NEXT: andl %edx, %edi # sched: [1:0.50] 1745 ; BTVER2-NEXT: andl %edi, (%rsi) # sched: [5:1.00] 1746 ; BTVER2-NEXT: andl (%rsi), %edi # sched: [4:1.00] 1747 ; BTVER2-NEXT: #NO_APP 1748 ; BTVER2-NEXT: retq # sched: [4:1.00] 1749 ; 1750 ; ZNVER1-LABEL: test_and_32: 1751 ; ZNVER1: # %bb.0: 1752 ; ZNVER1-NEXT: #APP 1753 ; ZNVER1-NEXT: andl $665536, %eax # imm = 0xA27C0 1754 ; ZNVER1-NEXT: # sched: [1:0.25] 1755 ; ZNVER1-NEXT: andl $665536, %edi # imm = 0xA27C0 1756 ; ZNVER1-NEXT: # sched: [1:0.25] 1757 ; ZNVER1-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1758 ; ZNVER1-NEXT: # sched: [5:0.50] 1759 ; ZNVER1-NEXT: andl $7, %edi # sched: [1:0.25] 1760 ; ZNVER1-NEXT: andl $7, (%rsi) # sched: [5:0.50] 1761 ; ZNVER1-NEXT: andl %edx, %edi # sched: [1:0.25] 1762 ; ZNVER1-NEXT: andl %edi, (%rsi) # sched: [5:0.50] 1763 ; ZNVER1-NEXT: andl (%rsi), %edi # sched: [5:0.50] 1764 ; ZNVER1-NEXT: #NO_APP 1765 ; ZNVER1-NEXT: retq # sched: [1:0.50] 1766 tail call void asm "andl $3, %EAX \0A\09 andl $3, $0 \0A\09 andl $3, $2 \0A\09 andl $4, $0 \0A\09 andl $4, $2 \0A\09 andl $1, $0 \0A\09 andl $0, $2 \0A\09 andl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 1767 ret void 1768 } 1769 define void @test_and_64(i64 %a0, i64* %a1, i64 %a2) optsize { 1770 ; GENERIC-LABEL: test_and_64: 1771 ; GENERIC: # %bb.0: 1772 ; GENERIC-NEXT: #APP 1773 ; GENERIC-NEXT: andq $665536, %rax # imm = 0xA27C0 1774 ; GENERIC-NEXT: # sched: [1:0.33] 1775 ; GENERIC-NEXT: andq $665536, %rdi # imm = 0xA27C0 1776 ; GENERIC-NEXT: # sched: [1:0.33] 1777 ; GENERIC-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1778 ; GENERIC-NEXT: # sched: [7:1.00] 1779 ; GENERIC-NEXT: andq $7, %rdi # sched: [1:0.33] 1780 ; GENERIC-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1781 ; GENERIC-NEXT: andq %rdx, %rdi # sched: [1:0.33] 1782 ; GENERIC-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1783 ; GENERIC-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1784 ; GENERIC-NEXT: #NO_APP 1785 ; GENERIC-NEXT: retq # sched: [1:1.00] 1786 ; 1787 ; ATOM-LABEL: test_and_64: 1788 ; ATOM: # %bb.0: 1789 ; ATOM-NEXT: #APP 1790 ; ATOM-NEXT: andq $665536, %rax # imm = 0xA27C0 1791 ; ATOM-NEXT: # sched: [1:0.50] 1792 ; ATOM-NEXT: andq $665536, %rdi # imm = 0xA27C0 1793 ; ATOM-NEXT: # sched: [1:0.50] 1794 ; ATOM-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1795 ; ATOM-NEXT: # sched: [1:1.00] 1796 ; ATOM-NEXT: andq $7, %rdi # sched: [1:0.50] 1797 ; ATOM-NEXT: andq $7, (%rsi) # sched: [1:1.00] 1798 ; ATOM-NEXT: andq %rdx, %rdi # sched: [1:0.50] 1799 ; ATOM-NEXT: andq %rdi, (%rsi) # sched: [1:1.00] 1800 ; ATOM-NEXT: andq (%rsi), %rdi # sched: [1:1.00] 1801 ; ATOM-NEXT: #NO_APP 1802 ; ATOM-NEXT: retq # sched: [79:39.50] 1803 ; 1804 ; SLM-LABEL: test_and_64: 1805 ; SLM: # %bb.0: 1806 ; SLM-NEXT: #APP 1807 ; SLM-NEXT: andq $665536, %rax # imm = 0xA27C0 1808 ; SLM-NEXT: # sched: [1:0.50] 1809 ; SLM-NEXT: andq $665536, %rdi # imm = 0xA27C0 1810 ; SLM-NEXT: # sched: [1:0.50] 1811 ; SLM-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1812 ; SLM-NEXT: # sched: [5:2.00] 1813 ; SLM-NEXT: andq $7, %rdi # sched: [1:0.50] 1814 ; SLM-NEXT: andq $7, (%rsi) # sched: [5:2.00] 1815 ; SLM-NEXT: andq %rdx, %rdi # sched: [1:0.50] 1816 ; SLM-NEXT: andq %rdi, (%rsi) # sched: [5:2.00] 1817 ; SLM-NEXT: andq (%rsi), %rdi # sched: [4:1.00] 1818 ; SLM-NEXT: #NO_APP 1819 ; SLM-NEXT: retq # sched: [4:1.00] 1820 ; 1821 ; SANDY-LABEL: test_and_64: 1822 ; SANDY: # %bb.0: 1823 ; SANDY-NEXT: #APP 1824 ; SANDY-NEXT: andq $665536, %rax # imm = 0xA27C0 1825 ; SANDY-NEXT: # sched: [1:0.33] 1826 ; SANDY-NEXT: andq $665536, %rdi # imm = 0xA27C0 1827 ; SANDY-NEXT: # sched: [1:0.33] 1828 ; SANDY-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1829 ; SANDY-NEXT: # sched: [7:1.00] 1830 ; SANDY-NEXT: andq $7, %rdi # sched: [1:0.33] 1831 ; SANDY-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1832 ; SANDY-NEXT: andq %rdx, %rdi # sched: [1:0.33] 1833 ; SANDY-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1834 ; SANDY-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1835 ; SANDY-NEXT: #NO_APP 1836 ; SANDY-NEXT: retq # sched: [1:1.00] 1837 ; 1838 ; HASWELL-LABEL: test_and_64: 1839 ; HASWELL: # %bb.0: 1840 ; HASWELL-NEXT: #APP 1841 ; HASWELL-NEXT: andq $665536, %rax # imm = 0xA27C0 1842 ; HASWELL-NEXT: # sched: [1:0.25] 1843 ; HASWELL-NEXT: andq $665536, %rdi # imm = 0xA27C0 1844 ; HASWELL-NEXT: # sched: [1:0.25] 1845 ; HASWELL-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1846 ; HASWELL-NEXT: # sched: [7:1.00] 1847 ; HASWELL-NEXT: andq $7, %rdi # sched: [1:0.25] 1848 ; HASWELL-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1849 ; HASWELL-NEXT: andq %rdx, %rdi # sched: [1:0.25] 1850 ; HASWELL-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1851 ; HASWELL-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1852 ; HASWELL-NEXT: #NO_APP 1853 ; HASWELL-NEXT: retq # sched: [7:1.00] 1854 ; 1855 ; BROADWELL-LABEL: test_and_64: 1856 ; BROADWELL: # %bb.0: 1857 ; BROADWELL-NEXT: #APP 1858 ; BROADWELL-NEXT: andq $665536, %rax # imm = 0xA27C0 1859 ; BROADWELL-NEXT: # sched: [1:0.25] 1860 ; BROADWELL-NEXT: andq $665536, %rdi # imm = 0xA27C0 1861 ; BROADWELL-NEXT: # sched: [1:0.25] 1862 ; BROADWELL-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1863 ; BROADWELL-NEXT: # sched: [7:1.00] 1864 ; BROADWELL-NEXT: andq $7, %rdi # sched: [1:0.25] 1865 ; BROADWELL-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1866 ; BROADWELL-NEXT: andq %rdx, %rdi # sched: [1:0.25] 1867 ; BROADWELL-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1868 ; BROADWELL-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1869 ; BROADWELL-NEXT: #NO_APP 1870 ; BROADWELL-NEXT: retq # sched: [7:1.00] 1871 ; 1872 ; SKYLAKE-LABEL: test_and_64: 1873 ; SKYLAKE: # %bb.0: 1874 ; SKYLAKE-NEXT: #APP 1875 ; SKYLAKE-NEXT: andq $665536, %rax # imm = 0xA27C0 1876 ; SKYLAKE-NEXT: # sched: [1:0.25] 1877 ; SKYLAKE-NEXT: andq $665536, %rdi # imm = 0xA27C0 1878 ; SKYLAKE-NEXT: # sched: [1:0.25] 1879 ; SKYLAKE-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1880 ; SKYLAKE-NEXT: # sched: [7:1.00] 1881 ; SKYLAKE-NEXT: andq $7, %rdi # sched: [1:0.25] 1882 ; SKYLAKE-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1883 ; SKYLAKE-NEXT: andq %rdx, %rdi # sched: [1:0.25] 1884 ; SKYLAKE-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1885 ; SKYLAKE-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1886 ; SKYLAKE-NEXT: #NO_APP 1887 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 1888 ; 1889 ; SKX-LABEL: test_and_64: 1890 ; SKX: # %bb.0: 1891 ; SKX-NEXT: #APP 1892 ; SKX-NEXT: andq $665536, %rax # imm = 0xA27C0 1893 ; SKX-NEXT: # sched: [1:0.25] 1894 ; SKX-NEXT: andq $665536, %rdi # imm = 0xA27C0 1895 ; SKX-NEXT: # sched: [1:0.25] 1896 ; SKX-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1897 ; SKX-NEXT: # sched: [7:1.00] 1898 ; SKX-NEXT: andq $7, %rdi # sched: [1:0.25] 1899 ; SKX-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1900 ; SKX-NEXT: andq %rdx, %rdi # sched: [1:0.25] 1901 ; SKX-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1902 ; SKX-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1903 ; SKX-NEXT: #NO_APP 1904 ; SKX-NEXT: retq # sched: [7:1.00] 1905 ; 1906 ; BTVER2-LABEL: test_and_64: 1907 ; BTVER2: # %bb.0: 1908 ; BTVER2-NEXT: #APP 1909 ; BTVER2-NEXT: andq $665536, %rax # imm = 0xA27C0 1910 ; BTVER2-NEXT: # sched: [1:0.50] 1911 ; BTVER2-NEXT: andq $665536, %rdi # imm = 0xA27C0 1912 ; BTVER2-NEXT: # sched: [1:0.50] 1913 ; BTVER2-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1914 ; BTVER2-NEXT: # sched: [5:1.00] 1915 ; BTVER2-NEXT: andq $7, %rdi # sched: [1:0.50] 1916 ; BTVER2-NEXT: andq $7, (%rsi) # sched: [5:1.00] 1917 ; BTVER2-NEXT: andq %rdx, %rdi # sched: [1:0.50] 1918 ; BTVER2-NEXT: andq %rdi, (%rsi) # sched: [5:1.00] 1919 ; BTVER2-NEXT: andq (%rsi), %rdi # sched: [4:1.00] 1920 ; BTVER2-NEXT: #NO_APP 1921 ; BTVER2-NEXT: retq # sched: [4:1.00] 1922 ; 1923 ; ZNVER1-LABEL: test_and_64: 1924 ; ZNVER1: # %bb.0: 1925 ; ZNVER1-NEXT: #APP 1926 ; ZNVER1-NEXT: andq $665536, %rax # imm = 0xA27C0 1927 ; ZNVER1-NEXT: # sched: [1:0.25] 1928 ; ZNVER1-NEXT: andq $665536, %rdi # imm = 0xA27C0 1929 ; ZNVER1-NEXT: # sched: [1:0.25] 1930 ; ZNVER1-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1931 ; ZNVER1-NEXT: # sched: [5:0.50] 1932 ; ZNVER1-NEXT: andq $7, %rdi # sched: [1:0.25] 1933 ; ZNVER1-NEXT: andq $7, (%rsi) # sched: [5:0.50] 1934 ; ZNVER1-NEXT: andq %rdx, %rdi # sched: [1:0.25] 1935 ; ZNVER1-NEXT: andq %rdi, (%rsi) # sched: [5:0.50] 1936 ; ZNVER1-NEXT: andq (%rsi), %rdi # sched: [5:0.50] 1937 ; ZNVER1-NEXT: #NO_APP 1938 ; ZNVER1-NEXT: retq # sched: [1:0.50] 1939 tail call void asm "andq $3, %RAX \0A\09 andq $3, $0 \0A\09 andq $3, $2 \0A\09 andq $4, $0 \0A\09 andq $4, $2 \0A\09 andq $1, $0 \0A\09 andq $0, $2 \0A\09 andq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 1940 ret void 1941 } 1942 1943 define i16 @test_bsf16(i16 %a0, i16* %a1) optsize { 1944 ; GENERIC-LABEL: test_bsf16: 1945 ; GENERIC: # %bb.0: 1946 ; GENERIC-NEXT: #APP 1947 ; GENERIC-NEXT: bsfw %di, %ax # sched: [3:1.00] 1948 ; GENERIC-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 1949 ; GENERIC-NEXT: #NO_APP 1950 ; GENERIC-NEXT: orl %ecx, %eax # sched: [1:0.33] 1951 ; GENERIC-NEXT: # kill: def $ax killed $ax killed $eax 1952 ; GENERIC-NEXT: retq # sched: [1:1.00] 1953 ; 1954 ; ATOM-LABEL: test_bsf16: 1955 ; ATOM: # %bb.0: 1956 ; ATOM-NEXT: #APP 1957 ; ATOM-NEXT: bsfw %di, %ax # sched: [16:8.00] 1958 ; ATOM-NEXT: bsfw (%rsi), %cx # sched: [16:8.00] 1959 ; ATOM-NEXT: #NO_APP 1960 ; ATOM-NEXT: orl %ecx, %eax # sched: [1:0.50] 1961 ; ATOM-NEXT: # kill: def $ax killed $ax killed $eax 1962 ; ATOM-NEXT: retq # sched: [79:39.50] 1963 ; 1964 ; SLM-LABEL: test_bsf16: 1965 ; SLM: # %bb.0: 1966 ; SLM-NEXT: #APP 1967 ; SLM-NEXT: bsfw %di, %ax # sched: [10:10.00] 1968 ; SLM-NEXT: bsfw (%rsi), %cx # sched: [13:10.00] 1969 ; SLM-NEXT: #NO_APP 1970 ; SLM-NEXT: orl %ecx, %eax # sched: [1:0.50] 1971 ; SLM-NEXT: # kill: def $ax killed $ax killed $eax 1972 ; SLM-NEXT: retq # sched: [4:1.00] 1973 ; 1974 ; SANDY-LABEL: test_bsf16: 1975 ; SANDY: # %bb.0: 1976 ; SANDY-NEXT: #APP 1977 ; SANDY-NEXT: bsfw %di, %ax # sched: [3:1.00] 1978 ; SANDY-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 1979 ; SANDY-NEXT: #NO_APP 1980 ; SANDY-NEXT: orl %ecx, %eax # sched: [1:0.33] 1981 ; SANDY-NEXT: # kill: def $ax killed $ax killed $eax 1982 ; SANDY-NEXT: retq # sched: [1:1.00] 1983 ; 1984 ; HASWELL-LABEL: test_bsf16: 1985 ; HASWELL: # %bb.0: 1986 ; HASWELL-NEXT: #APP 1987 ; HASWELL-NEXT: bsfw %di, %ax # sched: [3:1.00] 1988 ; HASWELL-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 1989 ; HASWELL-NEXT: #NO_APP 1990 ; HASWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 1991 ; HASWELL-NEXT: # kill: def $ax killed $ax killed $eax 1992 ; HASWELL-NEXT: retq # sched: [7:1.00] 1993 ; 1994 ; BROADWELL-LABEL: test_bsf16: 1995 ; BROADWELL: # %bb.0: 1996 ; BROADWELL-NEXT: #APP 1997 ; BROADWELL-NEXT: bsfw %di, %ax # sched: [3:1.00] 1998 ; BROADWELL-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 1999 ; BROADWELL-NEXT: #NO_APP 2000 ; BROADWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2001 ; BROADWELL-NEXT: # kill: def $ax killed $ax killed $eax 2002 ; BROADWELL-NEXT: retq # sched: [7:1.00] 2003 ; 2004 ; SKYLAKE-LABEL: test_bsf16: 2005 ; SKYLAKE: # %bb.0: 2006 ; SKYLAKE-NEXT: #APP 2007 ; SKYLAKE-NEXT: bsfw %di, %ax # sched: [3:1.00] 2008 ; SKYLAKE-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 2009 ; SKYLAKE-NEXT: #NO_APP 2010 ; SKYLAKE-NEXT: orl %ecx, %eax # sched: [1:0.25] 2011 ; SKYLAKE-NEXT: # kill: def $ax killed $ax killed $eax 2012 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 2013 ; 2014 ; SKX-LABEL: test_bsf16: 2015 ; SKX: # %bb.0: 2016 ; SKX-NEXT: #APP 2017 ; SKX-NEXT: bsfw %di, %ax # sched: [3:1.00] 2018 ; SKX-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 2019 ; SKX-NEXT: #NO_APP 2020 ; SKX-NEXT: orl %ecx, %eax # sched: [1:0.25] 2021 ; SKX-NEXT: # kill: def $ax killed $ax killed $eax 2022 ; SKX-NEXT: retq # sched: [7:1.00] 2023 ; 2024 ; BTVER2-LABEL: test_bsf16: 2025 ; BTVER2: # %bb.0: 2026 ; BTVER2-NEXT: #APP 2027 ; BTVER2-NEXT: bsfw %di, %ax # sched: [5:2.00] 2028 ; BTVER2-NEXT: bsfw (%rsi), %cx # sched: [8:2.00] 2029 ; BTVER2-NEXT: #NO_APP 2030 ; BTVER2-NEXT: orl %ecx, %eax # sched: [1:0.50] 2031 ; BTVER2-NEXT: # kill: def $ax killed $ax killed $eax 2032 ; BTVER2-NEXT: retq # sched: [4:1.00] 2033 ; 2034 ; ZNVER1-LABEL: test_bsf16: 2035 ; ZNVER1: # %bb.0: 2036 ; ZNVER1-NEXT: #APP 2037 ; ZNVER1-NEXT: bsfw %di, %ax # sched: [3:0.25] 2038 ; ZNVER1-NEXT: bsfw (%rsi), %cx # sched: [7:0.50] 2039 ; ZNVER1-NEXT: #NO_APP 2040 ; ZNVER1-NEXT: orl %ecx, %eax # sched: [1:0.25] 2041 ; ZNVER1-NEXT: # kill: def $ax killed $ax killed $eax 2042 ; ZNVER1-NEXT: retq # sched: [1:0.50] 2043 %1 = call { i16, i16 } asm sideeffect "bsf $2, $0 \0A\09 bsf $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i16 %a0, i16* %a1) 2044 %2 = extractvalue { i16, i16 } %1, 0 2045 %3 = extractvalue { i16, i16 } %1, 1 2046 %4 = or i16 %2, %3 2047 ret i16 %4 2048 } 2049 define i32 @test_bsf32(i32 %a0, i32* %a1) optsize { 2050 ; GENERIC-LABEL: test_bsf32: 2051 ; GENERIC: # %bb.0: 2052 ; GENERIC-NEXT: #APP 2053 ; GENERIC-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2054 ; GENERIC-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2055 ; GENERIC-NEXT: #NO_APP 2056 ; GENERIC-NEXT: orl %ecx, %eax # sched: [1:0.33] 2057 ; GENERIC-NEXT: retq # sched: [1:1.00] 2058 ; 2059 ; ATOM-LABEL: test_bsf32: 2060 ; ATOM: # %bb.0: 2061 ; ATOM-NEXT: #APP 2062 ; ATOM-NEXT: bsfl %edi, %eax # sched: [16:8.00] 2063 ; ATOM-NEXT: bsfl (%rsi), %ecx # sched: [16:8.00] 2064 ; ATOM-NEXT: #NO_APP 2065 ; ATOM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2066 ; ATOM-NEXT: retq # sched: [79:39.50] 2067 ; 2068 ; SLM-LABEL: test_bsf32: 2069 ; SLM: # %bb.0: 2070 ; SLM-NEXT: #APP 2071 ; SLM-NEXT: bsfl %edi, %eax # sched: [10:10.00] 2072 ; SLM-NEXT: bsfl (%rsi), %ecx # sched: [13:10.00] 2073 ; SLM-NEXT: #NO_APP 2074 ; SLM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2075 ; SLM-NEXT: retq # sched: [4:1.00] 2076 ; 2077 ; SANDY-LABEL: test_bsf32: 2078 ; SANDY: # %bb.0: 2079 ; SANDY-NEXT: #APP 2080 ; SANDY-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2081 ; SANDY-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2082 ; SANDY-NEXT: #NO_APP 2083 ; SANDY-NEXT: orl %ecx, %eax # sched: [1:0.33] 2084 ; SANDY-NEXT: retq # sched: [1:1.00] 2085 ; 2086 ; HASWELL-LABEL: test_bsf32: 2087 ; HASWELL: # %bb.0: 2088 ; HASWELL-NEXT: #APP 2089 ; HASWELL-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2090 ; HASWELL-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2091 ; HASWELL-NEXT: #NO_APP 2092 ; HASWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2093 ; HASWELL-NEXT: retq # sched: [7:1.00] 2094 ; 2095 ; BROADWELL-LABEL: test_bsf32: 2096 ; BROADWELL: # %bb.0: 2097 ; BROADWELL-NEXT: #APP 2098 ; BROADWELL-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2099 ; BROADWELL-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2100 ; BROADWELL-NEXT: #NO_APP 2101 ; BROADWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2102 ; BROADWELL-NEXT: retq # sched: [7:1.00] 2103 ; 2104 ; SKYLAKE-LABEL: test_bsf32: 2105 ; SKYLAKE: # %bb.0: 2106 ; SKYLAKE-NEXT: #APP 2107 ; SKYLAKE-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2108 ; SKYLAKE-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2109 ; SKYLAKE-NEXT: #NO_APP 2110 ; SKYLAKE-NEXT: orl %ecx, %eax # sched: [1:0.25] 2111 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 2112 ; 2113 ; SKX-LABEL: test_bsf32: 2114 ; SKX: # %bb.0: 2115 ; SKX-NEXT: #APP 2116 ; SKX-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2117 ; SKX-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2118 ; SKX-NEXT: #NO_APP 2119 ; SKX-NEXT: orl %ecx, %eax # sched: [1:0.25] 2120 ; SKX-NEXT: retq # sched: [7:1.00] 2121 ; 2122 ; BTVER2-LABEL: test_bsf32: 2123 ; BTVER2: # %bb.0: 2124 ; BTVER2-NEXT: #APP 2125 ; BTVER2-NEXT: bsfl %edi, %eax # sched: [5:2.00] 2126 ; BTVER2-NEXT: bsfl (%rsi), %ecx # sched: [8:2.00] 2127 ; BTVER2-NEXT: #NO_APP 2128 ; BTVER2-NEXT: orl %ecx, %eax # sched: [1:0.50] 2129 ; BTVER2-NEXT: retq # sched: [4:1.00] 2130 ; 2131 ; ZNVER1-LABEL: test_bsf32: 2132 ; ZNVER1: # %bb.0: 2133 ; ZNVER1-NEXT: #APP 2134 ; ZNVER1-NEXT: bsfl %edi, %eax # sched: [3:0.25] 2135 ; ZNVER1-NEXT: bsfl (%rsi), %ecx # sched: [7:0.50] 2136 ; ZNVER1-NEXT: #NO_APP 2137 ; ZNVER1-NEXT: orl %ecx, %eax # sched: [1:0.25] 2138 ; ZNVER1-NEXT: retq # sched: [1:0.50] 2139 %1 = call { i32, i32 } asm sideeffect "bsf $2, $0 \0A\09 bsf $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i32 %a0, i32* %a1) 2140 %2 = extractvalue { i32, i32 } %1, 0 2141 %3 = extractvalue { i32, i32 } %1, 1 2142 %4 = or i32 %2, %3 2143 ret i32 %4 2144 } 2145 define i64 @test_bsf64(i64 %a0, i64* %a1) optsize { 2146 ; GENERIC-LABEL: test_bsf64: 2147 ; GENERIC: # %bb.0: 2148 ; GENERIC-NEXT: #APP 2149 ; GENERIC-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2150 ; GENERIC-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2151 ; GENERIC-NEXT: #NO_APP 2152 ; GENERIC-NEXT: orq %rcx, %rax # sched: [1:0.33] 2153 ; GENERIC-NEXT: retq # sched: [1:1.00] 2154 ; 2155 ; ATOM-LABEL: test_bsf64: 2156 ; ATOM: # %bb.0: 2157 ; ATOM-NEXT: #APP 2158 ; ATOM-NEXT: bsfq %rdi, %rax # sched: [16:8.00] 2159 ; ATOM-NEXT: bsfq (%rsi), %rcx # sched: [16:8.00] 2160 ; ATOM-NEXT: #NO_APP 2161 ; ATOM-NEXT: orq %rcx, %rax # sched: [1:0.50] 2162 ; ATOM-NEXT: retq # sched: [79:39.50] 2163 ; 2164 ; SLM-LABEL: test_bsf64: 2165 ; SLM: # %bb.0: 2166 ; SLM-NEXT: #APP 2167 ; SLM-NEXT: bsfq %rdi, %rax # sched: [10:10.00] 2168 ; SLM-NEXT: bsfq (%rsi), %rcx # sched: [13:10.00] 2169 ; SLM-NEXT: #NO_APP 2170 ; SLM-NEXT: orq %rcx, %rax # sched: [1:0.50] 2171 ; SLM-NEXT: retq # sched: [4:1.00] 2172 ; 2173 ; SANDY-LABEL: test_bsf64: 2174 ; SANDY: # %bb.0: 2175 ; SANDY-NEXT: #APP 2176 ; SANDY-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2177 ; SANDY-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2178 ; SANDY-NEXT: #NO_APP 2179 ; SANDY-NEXT: orq %rcx, %rax # sched: [1:0.33] 2180 ; SANDY-NEXT: retq # sched: [1:1.00] 2181 ; 2182 ; HASWELL-LABEL: test_bsf64: 2183 ; HASWELL: # %bb.0: 2184 ; HASWELL-NEXT: #APP 2185 ; HASWELL-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2186 ; HASWELL-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2187 ; HASWELL-NEXT: #NO_APP 2188 ; HASWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 2189 ; HASWELL-NEXT: retq # sched: [7:1.00] 2190 ; 2191 ; BROADWELL-LABEL: test_bsf64: 2192 ; BROADWELL: # %bb.0: 2193 ; BROADWELL-NEXT: #APP 2194 ; BROADWELL-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2195 ; BROADWELL-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2196 ; BROADWELL-NEXT: #NO_APP 2197 ; BROADWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 2198 ; BROADWELL-NEXT: retq # sched: [7:1.00] 2199 ; 2200 ; SKYLAKE-LABEL: test_bsf64: 2201 ; SKYLAKE: # %bb.0: 2202 ; SKYLAKE-NEXT: #APP 2203 ; SKYLAKE-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2204 ; SKYLAKE-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2205 ; SKYLAKE-NEXT: #NO_APP 2206 ; SKYLAKE-NEXT: orq %rcx, %rax # sched: [1:0.25] 2207 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 2208 ; 2209 ; SKX-LABEL: test_bsf64: 2210 ; SKX: # %bb.0: 2211 ; SKX-NEXT: #APP 2212 ; SKX-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2213 ; SKX-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2214 ; SKX-NEXT: #NO_APP 2215 ; SKX-NEXT: orq %rcx, %rax # sched: [1:0.25] 2216 ; SKX-NEXT: retq # sched: [7:1.00] 2217 ; 2218 ; BTVER2-LABEL: test_bsf64: 2219 ; BTVER2: # %bb.0: 2220 ; BTVER2-NEXT: #APP 2221 ; BTVER2-NEXT: bsfq %rdi, %rax # sched: [5:2.00] 2222 ; BTVER2-NEXT: bsfq (%rsi), %rcx # sched: [8:2.00] 2223 ; BTVER2-NEXT: #NO_APP 2224 ; BTVER2-NEXT: orq %rcx, %rax # sched: [1:0.50] 2225 ; BTVER2-NEXT: retq # sched: [4:1.00] 2226 ; 2227 ; ZNVER1-LABEL: test_bsf64: 2228 ; ZNVER1: # %bb.0: 2229 ; ZNVER1-NEXT: #APP 2230 ; ZNVER1-NEXT: bsfq %rdi, %rax # sched: [3:0.25] 2231 ; ZNVER1-NEXT: bsfq (%rsi), %rcx # sched: [7:0.50] 2232 ; ZNVER1-NEXT: #NO_APP 2233 ; ZNVER1-NEXT: orq %rcx, %rax # sched: [1:0.25] 2234 ; ZNVER1-NEXT: retq # sched: [1:0.50] 2235 %1 = call { i64, i64 } asm sideeffect "bsf $2, $0 \0A\09 bsf $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i64 %a0, i64* %a1) 2236 %2 = extractvalue { i64, i64 } %1, 0 2237 %3 = extractvalue { i64, i64 } %1, 1 2238 %4 = or i64 %2, %3 2239 ret i64 %4 2240 } 2241 2242 define i16 @test_bsr16(i16 %a0, i16* %a1) optsize { 2243 ; GENERIC-LABEL: test_bsr16: 2244 ; GENERIC: # %bb.0: 2245 ; GENERIC-NEXT: #APP 2246 ; GENERIC-NEXT: bsrw %di, %ax # sched: [3:1.00] 2247 ; GENERIC-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2248 ; GENERIC-NEXT: #NO_APP 2249 ; GENERIC-NEXT: orl %ecx, %eax # sched: [1:0.33] 2250 ; GENERIC-NEXT: # kill: def $ax killed $ax killed $eax 2251 ; GENERIC-NEXT: retq # sched: [1:1.00] 2252 ; 2253 ; ATOM-LABEL: test_bsr16: 2254 ; ATOM: # %bb.0: 2255 ; ATOM-NEXT: #APP 2256 ; ATOM-NEXT: bsrw %di, %ax # sched: [16:8.00] 2257 ; ATOM-NEXT: bsrw (%rsi), %cx # sched: [16:8.00] 2258 ; ATOM-NEXT: #NO_APP 2259 ; ATOM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2260 ; ATOM-NEXT: # kill: def $ax killed $ax killed $eax 2261 ; ATOM-NEXT: retq # sched: [79:39.50] 2262 ; 2263 ; SLM-LABEL: test_bsr16: 2264 ; SLM: # %bb.0: 2265 ; SLM-NEXT: #APP 2266 ; SLM-NEXT: bsrw %di, %ax # sched: [10:10.00] 2267 ; SLM-NEXT: bsrw (%rsi), %cx # sched: [13:10.00] 2268 ; SLM-NEXT: #NO_APP 2269 ; SLM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2270 ; SLM-NEXT: # kill: def $ax killed $ax killed $eax 2271 ; SLM-NEXT: retq # sched: [4:1.00] 2272 ; 2273 ; SANDY-LABEL: test_bsr16: 2274 ; SANDY: # %bb.0: 2275 ; SANDY-NEXT: #APP 2276 ; SANDY-NEXT: bsrw %di, %ax # sched: [3:1.00] 2277 ; SANDY-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2278 ; SANDY-NEXT: #NO_APP 2279 ; SANDY-NEXT: orl %ecx, %eax # sched: [1:0.33] 2280 ; SANDY-NEXT: # kill: def $ax killed $ax killed $eax 2281 ; SANDY-NEXT: retq # sched: [1:1.00] 2282 ; 2283 ; HASWELL-LABEL: test_bsr16: 2284 ; HASWELL: # %bb.0: 2285 ; HASWELL-NEXT: #APP 2286 ; HASWELL-NEXT: bsrw %di, %ax # sched: [3:1.00] 2287 ; HASWELL-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2288 ; HASWELL-NEXT: #NO_APP 2289 ; HASWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2290 ; HASWELL-NEXT: # kill: def $ax killed $ax killed $eax 2291 ; HASWELL-NEXT: retq # sched: [7:1.00] 2292 ; 2293 ; BROADWELL-LABEL: test_bsr16: 2294 ; BROADWELL: # %bb.0: 2295 ; BROADWELL-NEXT: #APP 2296 ; BROADWELL-NEXT: bsrw %di, %ax # sched: [3:1.00] 2297 ; BROADWELL-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2298 ; BROADWELL-NEXT: #NO_APP 2299 ; BROADWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2300 ; BROADWELL-NEXT: # kill: def $ax killed $ax killed $eax 2301 ; BROADWELL-NEXT: retq # sched: [7:1.00] 2302 ; 2303 ; SKYLAKE-LABEL: test_bsr16: 2304 ; SKYLAKE: # %bb.0: 2305 ; SKYLAKE-NEXT: #APP 2306 ; SKYLAKE-NEXT: bsrw %di, %ax # sched: [3:1.00] 2307 ; SKYLAKE-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2308 ; SKYLAKE-NEXT: #NO_APP 2309 ; SKYLAKE-NEXT: orl %ecx, %eax # sched: [1:0.25] 2310 ; SKYLAKE-NEXT: # kill: def $ax killed $ax killed $eax 2311 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 2312 ; 2313 ; SKX-LABEL: test_bsr16: 2314 ; SKX: # %bb.0: 2315 ; SKX-NEXT: #APP 2316 ; SKX-NEXT: bsrw %di, %ax # sched: [3:1.00] 2317 ; SKX-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2318 ; SKX-NEXT: #NO_APP 2319 ; SKX-NEXT: orl %ecx, %eax # sched: [1:0.25] 2320 ; SKX-NEXT: # kill: def $ax killed $ax killed $eax 2321 ; SKX-NEXT: retq # sched: [7:1.00] 2322 ; 2323 ; BTVER2-LABEL: test_bsr16: 2324 ; BTVER2: # %bb.0: 2325 ; BTVER2-NEXT: #APP 2326 ; BTVER2-NEXT: bsrw %di, %ax # sched: [5:2.00] 2327 ; BTVER2-NEXT: bsrw (%rsi), %cx # sched: [8:2.00] 2328 ; BTVER2-NEXT: #NO_APP 2329 ; BTVER2-NEXT: orl %ecx, %eax # sched: [1:0.50] 2330 ; BTVER2-NEXT: # kill: def $ax killed $ax killed $eax 2331 ; BTVER2-NEXT: retq # sched: [4:1.00] 2332 ; 2333 ; ZNVER1-LABEL: test_bsr16: 2334 ; ZNVER1: # %bb.0: 2335 ; ZNVER1-NEXT: #APP 2336 ; ZNVER1-NEXT: bsrw %di, %ax # sched: [3:0.25] 2337 ; ZNVER1-NEXT: bsrw (%rsi), %cx # sched: [7:0.50] 2338 ; ZNVER1-NEXT: #NO_APP 2339 ; ZNVER1-NEXT: orl %ecx, %eax # sched: [1:0.25] 2340 ; ZNVER1-NEXT: # kill: def $ax killed $ax killed $eax 2341 ; ZNVER1-NEXT: retq # sched: [1:0.50] 2342 %1 = call { i16, i16 } asm sideeffect "bsr $2, $0 \0A\09 bsr $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i16 %a0, i16* %a1) 2343 %2 = extractvalue { i16, i16 } %1, 0 2344 %3 = extractvalue { i16, i16 } %1, 1 2345 %4 = or i16 %2, %3 2346 ret i16 %4 2347 } 2348 define i32 @test_bsr32(i32 %a0, i32* %a1) optsize { 2349 ; GENERIC-LABEL: test_bsr32: 2350 ; GENERIC: # %bb.0: 2351 ; GENERIC-NEXT: #APP 2352 ; GENERIC-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2353 ; GENERIC-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2354 ; GENERIC-NEXT: #NO_APP 2355 ; GENERIC-NEXT: orl %ecx, %eax # sched: [1:0.33] 2356 ; GENERIC-NEXT: retq # sched: [1:1.00] 2357 ; 2358 ; ATOM-LABEL: test_bsr32: 2359 ; ATOM: # %bb.0: 2360 ; ATOM-NEXT: #APP 2361 ; ATOM-NEXT: bsrl %edi, %eax # sched: [16:8.00] 2362 ; ATOM-NEXT: bsrl (%rsi), %ecx # sched: [16:8.00] 2363 ; ATOM-NEXT: #NO_APP 2364 ; ATOM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2365 ; ATOM-NEXT: retq # sched: [79:39.50] 2366 ; 2367 ; SLM-LABEL: test_bsr32: 2368 ; SLM: # %bb.0: 2369 ; SLM-NEXT: #APP 2370 ; SLM-NEXT: bsrl %edi, %eax # sched: [10:10.00] 2371 ; SLM-NEXT: bsrl (%rsi), %ecx # sched: [13:10.00] 2372 ; SLM-NEXT: #NO_APP 2373 ; SLM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2374 ; SLM-NEXT: retq # sched: [4:1.00] 2375 ; 2376 ; SANDY-LABEL: test_bsr32: 2377 ; SANDY: # %bb.0: 2378 ; SANDY-NEXT: #APP 2379 ; SANDY-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2380 ; SANDY-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2381 ; SANDY-NEXT: #NO_APP 2382 ; SANDY-NEXT: orl %ecx, %eax # sched: [1:0.33] 2383 ; SANDY-NEXT: retq # sched: [1:1.00] 2384 ; 2385 ; HASWELL-LABEL: test_bsr32: 2386 ; HASWELL: # %bb.0: 2387 ; HASWELL-NEXT: #APP 2388 ; HASWELL-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2389 ; HASWELL-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2390 ; HASWELL-NEXT: #NO_APP 2391 ; HASWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2392 ; HASWELL-NEXT: retq # sched: [7:1.00] 2393 ; 2394 ; BROADWELL-LABEL: test_bsr32: 2395 ; BROADWELL: # %bb.0: 2396 ; BROADWELL-NEXT: #APP 2397 ; BROADWELL-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2398 ; BROADWELL-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2399 ; BROADWELL-NEXT: #NO_APP 2400 ; BROADWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2401 ; BROADWELL-NEXT: retq # sched: [7:1.00] 2402 ; 2403 ; SKYLAKE-LABEL: test_bsr32: 2404 ; SKYLAKE: # %bb.0: 2405 ; SKYLAKE-NEXT: #APP 2406 ; SKYLAKE-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2407 ; SKYLAKE-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2408 ; SKYLAKE-NEXT: #NO_APP 2409 ; SKYLAKE-NEXT: orl %ecx, %eax # sched: [1:0.25] 2410 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 2411 ; 2412 ; SKX-LABEL: test_bsr32: 2413 ; SKX: # %bb.0: 2414 ; SKX-NEXT: #APP 2415 ; SKX-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2416 ; SKX-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2417 ; SKX-NEXT: #NO_APP 2418 ; SKX-NEXT: orl %ecx, %eax # sched: [1:0.25] 2419 ; SKX-NEXT: retq # sched: [7:1.00] 2420 ; 2421 ; BTVER2-LABEL: test_bsr32: 2422 ; BTVER2: # %bb.0: 2423 ; BTVER2-NEXT: #APP 2424 ; BTVER2-NEXT: bsrl %edi, %eax # sched: [5:2.00] 2425 ; BTVER2-NEXT: bsrl (%rsi), %ecx # sched: [8:2.00] 2426 ; BTVER2-NEXT: #NO_APP 2427 ; BTVER2-NEXT: orl %ecx, %eax # sched: [1:0.50] 2428 ; BTVER2-NEXT: retq # sched: [4:1.00] 2429 ; 2430 ; ZNVER1-LABEL: test_bsr32: 2431 ; ZNVER1: # %bb.0: 2432 ; ZNVER1-NEXT: #APP 2433 ; ZNVER1-NEXT: bsrl %edi, %eax # sched: [3:0.25] 2434 ; ZNVER1-NEXT: bsrl (%rsi), %ecx # sched: [7:0.50] 2435 ; ZNVER1-NEXT: #NO_APP 2436 ; ZNVER1-NEXT: orl %ecx, %eax # sched: [1:0.25] 2437 ; ZNVER1-NEXT: retq # sched: [1:0.50] 2438 %1 = call { i32, i32 } asm sideeffect "bsr $2, $0 \0A\09 bsr $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i32 %a0, i32* %a1) 2439 %2 = extractvalue { i32, i32 } %1, 0 2440 %3 = extractvalue { i32, i32 } %1, 1 2441 %4 = or i32 %2, %3 2442 ret i32 %4 2443 } 2444 define i64 @test_bsr64(i64 %a0, i64* %a1) optsize { 2445 ; GENERIC-LABEL: test_bsr64: 2446 ; GENERIC: # %bb.0: 2447 ; GENERIC-NEXT: #APP 2448 ; GENERIC-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2449 ; GENERIC-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2450 ; GENERIC-NEXT: #NO_APP 2451 ; GENERIC-NEXT: orq %rcx, %rax # sched: [1:0.33] 2452 ; GENERIC-NEXT: retq # sched: [1:1.00] 2453 ; 2454 ; ATOM-LABEL: test_bsr64: 2455 ; ATOM: # %bb.0: 2456 ; ATOM-NEXT: #APP 2457 ; ATOM-NEXT: bsrq %rdi, %rax # sched: [16:8.00] 2458 ; ATOM-NEXT: bsrq (%rsi), %rcx # sched: [16:8.00] 2459 ; ATOM-NEXT: #NO_APP 2460 ; ATOM-NEXT: orq %rcx, %rax # sched: [1:0.50] 2461 ; ATOM-NEXT: retq # sched: [79:39.50] 2462 ; 2463 ; SLM-LABEL: test_bsr64: 2464 ; SLM: # %bb.0: 2465 ; SLM-NEXT: #APP 2466 ; SLM-NEXT: bsrq %rdi, %rax # sched: [10:10.00] 2467 ; SLM-NEXT: bsrq (%rsi), %rcx # sched: [13:10.00] 2468 ; SLM-NEXT: #NO_APP 2469 ; SLM-NEXT: orq %rcx, %rax # sched: [1:0.50] 2470 ; SLM-NEXT: retq # sched: [4:1.00] 2471 ; 2472 ; SANDY-LABEL: test_bsr64: 2473 ; SANDY: # %bb.0: 2474 ; SANDY-NEXT: #APP 2475 ; SANDY-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2476 ; SANDY-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2477 ; SANDY-NEXT: #NO_APP 2478 ; SANDY-NEXT: orq %rcx, %rax # sched: [1:0.33] 2479 ; SANDY-NEXT: retq # sched: [1:1.00] 2480 ; 2481 ; HASWELL-LABEL: test_bsr64: 2482 ; HASWELL: # %bb.0: 2483 ; HASWELL-NEXT: #APP 2484 ; HASWELL-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2485 ; HASWELL-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2486 ; HASWELL-NEXT: #NO_APP 2487 ; HASWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 2488 ; HASWELL-NEXT: retq # sched: [7:1.00] 2489 ; 2490 ; BROADWELL-LABEL: test_bsr64: 2491 ; BROADWELL: # %bb.0: 2492 ; BROADWELL-NEXT: #APP 2493 ; BROADWELL-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2494 ; BROADWELL-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2495 ; BROADWELL-NEXT: #NO_APP 2496 ; BROADWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 2497 ; BROADWELL-NEXT: retq # sched: [7:1.00] 2498 ; 2499 ; SKYLAKE-LABEL: test_bsr64: 2500 ; SKYLAKE: # %bb.0: 2501 ; SKYLAKE-NEXT: #APP 2502 ; SKYLAKE-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2503 ; SKYLAKE-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2504 ; SKYLAKE-NEXT: #NO_APP 2505 ; SKYLAKE-NEXT: orq %rcx, %rax # sched: [1:0.25] 2506 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 2507 ; 2508 ; SKX-LABEL: test_bsr64: 2509 ; SKX: # %bb.0: 2510 ; SKX-NEXT: #APP 2511 ; SKX-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2512 ; SKX-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2513 ; SKX-NEXT: #NO_APP 2514 ; SKX-NEXT: orq %rcx, %rax # sched: [1:0.25] 2515 ; SKX-NEXT: retq # sched: [7:1.00] 2516 ; 2517 ; BTVER2-LABEL: test_bsr64: 2518 ; BTVER2: # %bb.0: 2519 ; BTVER2-NEXT: #APP 2520 ; BTVER2-NEXT: bsrq %rdi, %rax # sched: [5:2.00] 2521 ; BTVER2-NEXT: bsrq (%rsi), %rcx # sched: [8:2.00] 2522 ; BTVER2-NEXT: #NO_APP 2523 ; BTVER2-NEXT: orq %rcx, %rax # sched: [1:0.50] 2524 ; BTVER2-NEXT: retq # sched: [4:1.00] 2525 ; 2526 ; ZNVER1-LABEL: test_bsr64: 2527 ; ZNVER1: # %bb.0: 2528 ; ZNVER1-NEXT: #APP 2529 ; ZNVER1-NEXT: bsrq %rdi, %rax # sched: [3:0.25] 2530 ; ZNVER1-NEXT: bsrq (%rsi), %rcx # sched: [7:0.50] 2531 ; ZNVER1-NEXT: #NO_APP 2532 ; ZNVER1-NEXT: orq %rcx, %rax # sched: [1:0.25] 2533 ; ZNVER1-NEXT: retq # sched: [1:0.50] 2534 %1 = call { i64, i64 } asm sideeffect "bsr $2, $0 \0A\09 bsr $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i64 %a0, i64* %a1) 2535 %2 = extractvalue { i64, i64 } %1, 0 2536 %3 = extractvalue { i64, i64 } %1, 1 2537 %4 = or i64 %2, %3 2538 ret i64 %4 2539 } 2540 2541 define i32 @test_bswap32(i32 %a0) optsize { 2542 ; GENERIC-LABEL: test_bswap32: 2543 ; GENERIC: # %bb.0: 2544 ; GENERIC-NEXT: bswapl %edi # sched: [1:1.00] 2545 ; GENERIC-NEXT: movl %edi, %eax # sched: [1:0.33] 2546 ; GENERIC-NEXT: retq # sched: [1:1.00] 2547 ; 2548 ; ATOM-LABEL: test_bswap32: 2549 ; ATOM: # %bb.0: 2550 ; ATOM-NEXT: bswapl %edi # sched: [1:1.00] 2551 ; ATOM-NEXT: movl %edi, %eax # sched: [1:0.50] 2552 ; ATOM-NEXT: retq # sched: [79:39.50] 2553 ; 2554 ; SLM-LABEL: test_bswap32: 2555 ; SLM: # %bb.0: 2556 ; SLM-NEXT: bswapl %edi # sched: [1:0.50] 2557 ; SLM-NEXT: movl %edi, %eax # sched: [1:0.50] 2558 ; SLM-NEXT: retq # sched: [4:1.00] 2559 ; 2560 ; SANDY-LABEL: test_bswap32: 2561 ; SANDY: # %bb.0: 2562 ; SANDY-NEXT: bswapl %edi # sched: [1:1.00] 2563 ; SANDY-NEXT: movl %edi, %eax # sched: [1:0.33] 2564 ; SANDY-NEXT: retq # sched: [1:1.00] 2565 ; 2566 ; HASWELL-LABEL: test_bswap32: 2567 ; HASWELL: # %bb.0: 2568 ; HASWELL-NEXT: bswapl %edi # sched: [1:0.50] 2569 ; HASWELL-NEXT: movl %edi, %eax # sched: [1:0.25] 2570 ; HASWELL-NEXT: retq # sched: [7:1.00] 2571 ; 2572 ; BROADWELL-LABEL: test_bswap32: 2573 ; BROADWELL: # %bb.0: 2574 ; BROADWELL-NEXT: bswapl %edi # sched: [1:0.50] 2575 ; BROADWELL-NEXT: movl %edi, %eax # sched: [1:0.25] 2576 ; BROADWELL-NEXT: retq # sched: [7:1.00] 2577 ; 2578 ; SKYLAKE-LABEL: test_bswap32: 2579 ; SKYLAKE: # %bb.0: 2580 ; SKYLAKE-NEXT: bswapl %edi # sched: [1:0.50] 2581 ; SKYLAKE-NEXT: movl %edi, %eax # sched: [1:0.25] 2582 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 2583 ; 2584 ; SKX-LABEL: test_bswap32: 2585 ; SKX: # %bb.0: 2586 ; SKX-NEXT: bswapl %edi # sched: [1:0.50] 2587 ; SKX-NEXT: movl %edi, %eax # sched: [1:0.25] 2588 ; SKX-NEXT: retq # sched: [7:1.00] 2589 ; 2590 ; BTVER2-LABEL: test_bswap32: 2591 ; BTVER2: # %bb.0: 2592 ; BTVER2-NEXT: bswapl %edi # sched: [1:0.50] 2593 ; BTVER2-NEXT: movl %edi, %eax # sched: [1:0.50] 2594 ; BTVER2-NEXT: retq # sched: [4:1.00] 2595 ; 2596 ; ZNVER1-LABEL: test_bswap32: 2597 ; ZNVER1: # %bb.0: 2598 ; ZNVER1-NEXT: bswapl %edi # sched: [1:1.00] 2599 ; ZNVER1-NEXT: movl %edi, %eax # sched: [1:0.25] 2600 ; ZNVER1-NEXT: retq # sched: [1:0.50] 2601 %1 = tail call i32 asm "bswap $0", "=r,0"(i32 %a0) nounwind 2602 ret i32 %1 2603 } 2604 define i64 @test_bswap64(i64 %a0) optsize { 2605 ; GENERIC-LABEL: test_bswap64: 2606 ; GENERIC: # %bb.0: 2607 ; GENERIC-NEXT: bswapq %rdi # sched: [2:1.00] 2608 ; GENERIC-NEXT: movq %rdi, %rax # sched: [1:0.33] 2609 ; GENERIC-NEXT: retq # sched: [1:1.00] 2610 ; 2611 ; ATOM-LABEL: test_bswap64: 2612 ; ATOM: # %bb.0: 2613 ; ATOM-NEXT: bswapq %rdi # sched: [1:1.00] 2614 ; ATOM-NEXT: movq %rdi, %rax # sched: [1:0.50] 2615 ; ATOM-NEXT: retq # sched: [79:39.50] 2616 ; 2617 ; SLM-LABEL: test_bswap64: 2618 ; SLM: # %bb.0: 2619 ; SLM-NEXT: bswapq %rdi # sched: [1:0.50] 2620 ; SLM-NEXT: movq %rdi, %rax # sched: [1:0.50] 2621 ; SLM-NEXT: retq # sched: [4:1.00] 2622 ; 2623 ; SANDY-LABEL: test_bswap64: 2624 ; SANDY: # %bb.0: 2625 ; SANDY-NEXT: bswapq %rdi # sched: [2:1.00] 2626 ; SANDY-NEXT: movq %rdi, %rax # sched: [1:0.33] 2627 ; SANDY-NEXT: retq # sched: [1:1.00] 2628 ; 2629 ; HASWELL-LABEL: test_bswap64: 2630 ; HASWELL: # %bb.0: 2631 ; HASWELL-NEXT: bswapq %rdi # sched: [2:0.50] 2632 ; HASWELL-NEXT: movq %rdi, %rax # sched: [1:0.25] 2633 ; HASWELL-NEXT: retq # sched: [7:1.00] 2634 ; 2635 ; BROADWELL-LABEL: test_bswap64: 2636 ; BROADWELL: # %bb.0: 2637 ; BROADWELL-NEXT: bswapq %rdi # sched: [2:0.50] 2638 ; BROADWELL-NEXT: movq %rdi, %rax # sched: [1:0.25] 2639 ; BROADWELL-NEXT: retq # sched: [7:1.00] 2640 ; 2641 ; SKYLAKE-LABEL: test_bswap64: 2642 ; SKYLAKE: # %bb.0: 2643 ; SKYLAKE-NEXT: bswapq %rdi # sched: [2:0.50] 2644 ; SKYLAKE-NEXT: movq %rdi, %rax # sched: [1:0.25] 2645 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 2646 ; 2647 ; SKX-LABEL: test_bswap64: 2648 ; SKX: # %bb.0: 2649 ; SKX-NEXT: bswapq %rdi # sched: [2:0.50] 2650 ; SKX-NEXT: movq %rdi, %rax # sched: [1:0.25] 2651 ; SKX-NEXT: retq # sched: [7:1.00] 2652 ; 2653 ; BTVER2-LABEL: test_bswap64: 2654 ; BTVER2: # %bb.0: 2655 ; BTVER2-NEXT: bswapq %rdi # sched: [1:0.50] 2656 ; BTVER2-NEXT: movq %rdi, %rax # sched: [1:0.50] 2657 ; BTVER2-NEXT: retq # sched: [4:1.00] 2658 ; 2659 ; ZNVER1-LABEL: test_bswap64: 2660 ; ZNVER1: # %bb.0: 2661 ; ZNVER1-NEXT: bswapq %rdi # sched: [1:1.00] 2662 ; ZNVER1-NEXT: movq %rdi, %rax # sched: [1:0.25] 2663 ; ZNVER1-NEXT: retq # sched: [1:0.50] 2664 %1 = tail call i64 asm "bswap $0", "=r,0"(i64 %a0) nounwind 2665 ret i64 %1 2666 } 2667 2668 define void @test_bt_btc_btr_bts_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 2669 ; GENERIC-LABEL: test_bt_btc_btr_bts_16: 2670 ; GENERIC: # %bb.0: 2671 ; GENERIC-NEXT: #APP 2672 ; GENERIC-NEXT: btw %si, %di # sched: [1:0.50] 2673 ; GENERIC-NEXT: btcw %si, %di # sched: [1:0.50] 2674 ; GENERIC-NEXT: btrw %si, %di # sched: [1:0.50] 2675 ; GENERIC-NEXT: btsw %si, %di # sched: [1:0.50] 2676 ; GENERIC-NEXT: btw %si, (%rdx) # sched: [9:1.00] 2677 ; GENERIC-NEXT: btcw %si, (%rdx) # sched: [9:1.00] 2678 ; GENERIC-NEXT: btrw %si, (%rdx) # sched: [9:1.00] 2679 ; GENERIC-NEXT: btsw %si, (%rdx) # sched: [9:1.00] 2680 ; GENERIC-NEXT: btw $7, %di # sched: [1:0.50] 2681 ; GENERIC-NEXT: btcw $7, %di # sched: [1:0.50] 2682 ; GENERIC-NEXT: btrw $7, %di # sched: [1:0.50] 2683 ; GENERIC-NEXT: btsw $7, %di # sched: [1:0.50] 2684 ; GENERIC-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2685 ; GENERIC-NEXT: btcw $7, (%rdx) # sched: [7:1.00] 2686 ; GENERIC-NEXT: btrw $7, (%rdx) # sched: [7:1.00] 2687 ; GENERIC-NEXT: btsw $7, (%rdx) # sched: [7:1.00] 2688 ; GENERIC-NEXT: #NO_APP 2689 ; GENERIC-NEXT: retq # sched: [1:1.00] 2690 ; 2691 ; ATOM-LABEL: test_bt_btc_btr_bts_16: 2692 ; ATOM: # %bb.0: 2693 ; ATOM-NEXT: #APP 2694 ; ATOM-NEXT: btw %si, %di # sched: [1:1.00] 2695 ; ATOM-NEXT: btcw %si, %di # sched: [1:1.00] 2696 ; ATOM-NEXT: btrw %si, %di # sched: [1:1.00] 2697 ; ATOM-NEXT: btsw %si, %di # sched: [1:1.00] 2698 ; ATOM-NEXT: btw %si, (%rdx) # sched: [9:4.50] 2699 ; ATOM-NEXT: btcw %si, (%rdx) # sched: [11:5.50] 2700 ; ATOM-NEXT: btrw %si, (%rdx) # sched: [11:5.50] 2701 ; ATOM-NEXT: btsw %si, (%rdx) # sched: [11:5.50] 2702 ; ATOM-NEXT: btw $7, %di # sched: [1:1.00] 2703 ; ATOM-NEXT: btcw $7, %di # sched: [1:1.00] 2704 ; ATOM-NEXT: btrw $7, %di # sched: [1:1.00] 2705 ; ATOM-NEXT: btsw $7, %di # sched: [1:1.00] 2706 ; ATOM-NEXT: btw $7, (%rdx) # sched: [1:0.50] 2707 ; ATOM-NEXT: btcw $7, (%rdx) # sched: [2:1.00] 2708 ; ATOM-NEXT: btrw $7, (%rdx) # sched: [2:1.00] 2709 ; ATOM-NEXT: btsw $7, (%rdx) # sched: [2:1.00] 2710 ; ATOM-NEXT: #NO_APP 2711 ; ATOM-NEXT: retq # sched: [79:39.50] 2712 ; 2713 ; SLM-LABEL: test_bt_btc_btr_bts_16: 2714 ; SLM: # %bb.0: 2715 ; SLM-NEXT: #APP 2716 ; SLM-NEXT: btw %si, %di # sched: [1:0.50] 2717 ; SLM-NEXT: btcw %si, %di # sched: [1:0.50] 2718 ; SLM-NEXT: btrw %si, %di # sched: [1:0.50] 2719 ; SLM-NEXT: btsw %si, %di # sched: [1:0.50] 2720 ; SLM-NEXT: btw %si, (%rdx) # sched: [4:1.00] 2721 ; SLM-NEXT: btcw %si, (%rdx) # sched: [4:2.00] 2722 ; SLM-NEXT: btrw %si, (%rdx) # sched: [4:2.00] 2723 ; SLM-NEXT: btsw %si, (%rdx) # sched: [4:2.00] 2724 ; SLM-NEXT: btw $7, %di # sched: [1:0.50] 2725 ; SLM-NEXT: btcw $7, %di # sched: [1:0.50] 2726 ; SLM-NEXT: btrw $7, %di # sched: [1:0.50] 2727 ; SLM-NEXT: btsw $7, %di # sched: [1:0.50] 2728 ; SLM-NEXT: btw $7, (%rdx) # sched: [1:0.50] 2729 ; SLM-NEXT: btcw $7, (%rdx) # sched: [4:2.00] 2730 ; SLM-NEXT: btrw $7, (%rdx) # sched: [4:2.00] 2731 ; SLM-NEXT: btsw $7, (%rdx) # sched: [4:2.00] 2732 ; SLM-NEXT: #NO_APP 2733 ; SLM-NEXT: retq # sched: [4:1.00] 2734 ; 2735 ; SANDY-LABEL: test_bt_btc_btr_bts_16: 2736 ; SANDY: # %bb.0: 2737 ; SANDY-NEXT: #APP 2738 ; SANDY-NEXT: btw %si, %di # sched: [1:0.50] 2739 ; SANDY-NEXT: btcw %si, %di # sched: [1:0.50] 2740 ; SANDY-NEXT: btrw %si, %di # sched: [1:0.50] 2741 ; SANDY-NEXT: btsw %si, %di # sched: [1:0.50] 2742 ; SANDY-NEXT: btw %si, (%rdx) # sched: [9:1.00] 2743 ; SANDY-NEXT: btcw %si, (%rdx) # sched: [9:1.00] 2744 ; SANDY-NEXT: btrw %si, (%rdx) # sched: [9:1.00] 2745 ; SANDY-NEXT: btsw %si, (%rdx) # sched: [9:1.00] 2746 ; SANDY-NEXT: btw $7, %di # sched: [1:0.50] 2747 ; SANDY-NEXT: btcw $7, %di # sched: [1:0.50] 2748 ; SANDY-NEXT: btrw $7, %di # sched: [1:0.50] 2749 ; SANDY-NEXT: btsw $7, %di # sched: [1:0.50] 2750 ; SANDY-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2751 ; SANDY-NEXT: btcw $7, (%rdx) # sched: [7:1.00] 2752 ; SANDY-NEXT: btrw $7, (%rdx) # sched: [7:1.00] 2753 ; SANDY-NEXT: btsw $7, (%rdx) # sched: [7:1.00] 2754 ; SANDY-NEXT: #NO_APP 2755 ; SANDY-NEXT: retq # sched: [1:1.00] 2756 ; 2757 ; HASWELL-LABEL: test_bt_btc_btr_bts_16: 2758 ; HASWELL: # %bb.0: 2759 ; HASWELL-NEXT: #APP 2760 ; HASWELL-NEXT: btw %si, %di # sched: [1:0.50] 2761 ; HASWELL-NEXT: btcw %si, %di # sched: [1:0.50] 2762 ; HASWELL-NEXT: btrw %si, %di # sched: [1:0.50] 2763 ; HASWELL-NEXT: btsw %si, %di # sched: [1:0.50] 2764 ; HASWELL-NEXT: btw %si, (%rdx) # sched: [1:2.50] 2765 ; HASWELL-NEXT: btcw %si, (%rdx) # sched: [1:2.75] 2766 ; HASWELL-NEXT: btrw %si, (%rdx) # sched: [1:2.75] 2767 ; HASWELL-NEXT: btsw %si, (%rdx) # sched: [1:2.75] 2768 ; HASWELL-NEXT: btw $7, %di # sched: [1:0.50] 2769 ; HASWELL-NEXT: btcw $7, %di # sched: [1:0.50] 2770 ; HASWELL-NEXT: btrw $7, %di # sched: [1:0.50] 2771 ; HASWELL-NEXT: btsw $7, %di # sched: [1:0.50] 2772 ; HASWELL-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2773 ; HASWELL-NEXT: btcw $7, (%rdx) # sched: [7:1.00] 2774 ; HASWELL-NEXT: btrw $7, (%rdx) # sched: [7:1.00] 2775 ; HASWELL-NEXT: btsw $7, (%rdx) # sched: [7:1.00] 2776 ; HASWELL-NEXT: #NO_APP 2777 ; HASWELL-NEXT: retq # sched: [7:1.00] 2778 ; 2779 ; BROADWELL-LABEL: test_bt_btc_btr_bts_16: 2780 ; BROADWELL: # %bb.0: 2781 ; BROADWELL-NEXT: #APP 2782 ; BROADWELL-NEXT: btw %si, %di # sched: [1:0.50] 2783 ; BROADWELL-NEXT: btcw %si, %di # sched: [1:0.50] 2784 ; BROADWELL-NEXT: btrw %si, %di # sched: [1:0.50] 2785 ; BROADWELL-NEXT: btsw %si, %di # sched: [1:0.50] 2786 ; BROADWELL-NEXT: btw %si, (%rdx) # sched: [6:0.50] 2787 ; BROADWELL-NEXT: btcw %si, (%rdx) # sched: [6:1.00] 2788 ; BROADWELL-NEXT: btrw %si, (%rdx) # sched: [6:1.00] 2789 ; BROADWELL-NEXT: btsw %si, (%rdx) # sched: [6:1.00] 2790 ; BROADWELL-NEXT: btw $7, %di # sched: [1:0.50] 2791 ; BROADWELL-NEXT: btcw $7, %di # sched: [1:0.50] 2792 ; BROADWELL-NEXT: btrw $7, %di # sched: [1:0.50] 2793 ; BROADWELL-NEXT: btsw $7, %di # sched: [1:0.50] 2794 ; BROADWELL-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2795 ; BROADWELL-NEXT: btcw $7, (%rdx) # sched: [6:1.00] 2796 ; BROADWELL-NEXT: btrw $7, (%rdx) # sched: [6:1.00] 2797 ; BROADWELL-NEXT: btsw $7, (%rdx) # sched: [6:1.00] 2798 ; BROADWELL-NEXT: #NO_APP 2799 ; BROADWELL-NEXT: retq # sched: [7:1.00] 2800 ; 2801 ; SKYLAKE-LABEL: test_bt_btc_btr_bts_16: 2802 ; SKYLAKE: # %bb.0: 2803 ; SKYLAKE-NEXT: #APP 2804 ; SKYLAKE-NEXT: btw %si, %di # sched: [1:0.50] 2805 ; SKYLAKE-NEXT: btcw %si, %di # sched: [1:0.50] 2806 ; SKYLAKE-NEXT: btrw %si, %di # sched: [1:0.50] 2807 ; SKYLAKE-NEXT: btsw %si, %di # sched: [1:0.50] 2808 ; SKYLAKE-NEXT: btw %si, (%rdx) # sched: [6:0.50] 2809 ; SKYLAKE-NEXT: btcw %si, (%rdx) # sched: [6:1.00] 2810 ; SKYLAKE-NEXT: btrw %si, (%rdx) # sched: [6:1.00] 2811 ; SKYLAKE-NEXT: btsw %si, (%rdx) # sched: [6:1.00] 2812 ; SKYLAKE-NEXT: btw $7, %di # sched: [1:0.50] 2813 ; SKYLAKE-NEXT: btcw $7, %di # sched: [1:0.50] 2814 ; SKYLAKE-NEXT: btrw $7, %di # sched: [1:0.50] 2815 ; SKYLAKE-NEXT: btsw $7, %di # sched: [1:0.50] 2816 ; SKYLAKE-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2817 ; SKYLAKE-NEXT: btcw $7, (%rdx) # sched: [6:1.00] 2818 ; SKYLAKE-NEXT: btrw $7, (%rdx) # sched: [6:1.00] 2819 ; SKYLAKE-NEXT: btsw $7, (%rdx) # sched: [6:1.00] 2820 ; SKYLAKE-NEXT: #NO_APP 2821 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 2822 ; 2823 ; SKX-LABEL: test_bt_btc_btr_bts_16: 2824 ; SKX: # %bb.0: 2825 ; SKX-NEXT: #APP 2826 ; SKX-NEXT: btw %si, %di # sched: [1:0.50] 2827 ; SKX-NEXT: btcw %si, %di # sched: [1:0.50] 2828 ; SKX-NEXT: btrw %si, %di # sched: [1:0.50] 2829 ; SKX-NEXT: btsw %si, %di # sched: [1:0.50] 2830 ; SKX-NEXT: btw %si, (%rdx) # sched: [6:0.50] 2831 ; SKX-NEXT: btcw %si, (%rdx) # sched: [6:1.00] 2832 ; SKX-NEXT: btrw %si, (%rdx) # sched: [6:1.00] 2833 ; SKX-NEXT: btsw %si, (%rdx) # sched: [6:1.00] 2834 ; SKX-NEXT: btw $7, %di # sched: [1:0.50] 2835 ; SKX-NEXT: btcw $7, %di # sched: [1:0.50] 2836 ; SKX-NEXT: btrw $7, %di # sched: [1:0.50] 2837 ; SKX-NEXT: btsw $7, %di # sched: [1:0.50] 2838 ; SKX-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2839 ; SKX-NEXT: btcw $7, (%rdx) # sched: [6:1.00] 2840 ; SKX-NEXT: btrw $7, (%rdx) # sched: [6:1.00] 2841 ; SKX-NEXT: btsw $7, (%rdx) # sched: [6:1.00] 2842 ; SKX-NEXT: #NO_APP 2843 ; SKX-NEXT: retq # sched: [7:1.00] 2844 ; 2845 ; BTVER2-LABEL: test_bt_btc_btr_bts_16: 2846 ; BTVER2: # %bb.0: 2847 ; BTVER2-NEXT: #APP 2848 ; BTVER2-NEXT: btw %si, %di # sched: [1:0.50] 2849 ; BTVER2-NEXT: btcw %si, %di # sched: [1:0.50] 2850 ; BTVER2-NEXT: btrw %si, %di # sched: [1:0.50] 2851 ; BTVER2-NEXT: btsw %si, %di # sched: [1:0.50] 2852 ; BTVER2-NEXT: btw %si, (%rdx) # sched: [4:1.00] 2853 ; BTVER2-NEXT: btcw %si, (%rdx) # sched: [4:1.00] 2854 ; BTVER2-NEXT: btrw %si, (%rdx) # sched: [4:1.00] 2855 ; BTVER2-NEXT: btsw %si, (%rdx) # sched: [4:1.00] 2856 ; BTVER2-NEXT: btw $7, %di # sched: [1:0.50] 2857 ; BTVER2-NEXT: btcw $7, %di # sched: [1:0.50] 2858 ; BTVER2-NEXT: btrw $7, %di # sched: [1:0.50] 2859 ; BTVER2-NEXT: btsw $7, %di # sched: [1:0.50] 2860 ; BTVER2-NEXT: btw $7, (%rdx) # sched: [1:0.50] 2861 ; BTVER2-NEXT: btcw $7, (%rdx) # sched: [4:1.00] 2862 ; BTVER2-NEXT: btrw $7, (%rdx) # sched: [4:1.00] 2863 ; BTVER2-NEXT: btsw $7, (%rdx) # sched: [4:1.00] 2864 ; BTVER2-NEXT: #NO_APP 2865 ; BTVER2-NEXT: retq # sched: [4:1.00] 2866 ; 2867 ; ZNVER1-LABEL: test_bt_btc_btr_bts_16: 2868 ; ZNVER1: # %bb.0: 2869 ; ZNVER1-NEXT: #APP 2870 ; ZNVER1-NEXT: btw %si, %di # sched: [1:0.25] 2871 ; ZNVER1-NEXT: btcw %si, %di # sched: [2:0.25] 2872 ; ZNVER1-NEXT: btrw %si, %di # sched: [2:0.25] 2873 ; ZNVER1-NEXT: btsw %si, %di # sched: [2:0.25] 2874 ; ZNVER1-NEXT: btw %si, (%rdx) # sched: [5:0.50] 2875 ; ZNVER1-NEXT: btcw %si, (%rdx) # sched: [6:0.50] 2876 ; ZNVER1-NEXT: btrw %si, (%rdx) # sched: [6:0.50] 2877 ; ZNVER1-NEXT: btsw %si, (%rdx) # sched: [6:0.50] 2878 ; ZNVER1-NEXT: btw $7, %di # sched: [1:0.25] 2879 ; ZNVER1-NEXT: btcw $7, %di # sched: [2:0.25] 2880 ; ZNVER1-NEXT: btrw $7, %di # sched: [2:0.25] 2881 ; ZNVER1-NEXT: btsw $7, %di # sched: [2:0.25] 2882 ; ZNVER1-NEXT: btw $7, (%rdx) # sched: [5:0.50] 2883 ; ZNVER1-NEXT: btcw $7, (%rdx) # sched: [6:0.50] 2884 ; ZNVER1-NEXT: btrw $7, (%rdx) # sched: [6:0.50] 2885 ; ZNVER1-NEXT: btsw $7, (%rdx) # sched: [6:0.50] 2886 ; ZNVER1-NEXT: #NO_APP 2887 ; ZNVER1-NEXT: retq # sched: [1:0.50] 2888 call void asm sideeffect "btw $1, $0 \0A\09 btcw $1, $0 \0A\09 btrw $1, $0 \0A\09 btsw $1, $0 \0A\09 btw $1, $2 \0A\09 btcw $1, $2 \0A\09 btrw $1, $2 \0A\09 btsw $1, $2 \0A\09 btw $3, $0 \0A\09 btcw $3, $0 \0A\09 btrw $3, $0 \0A\09 btsw $3, $0 \0A\09 btw $3, $2 \0A\09 btcw $3, $2 \0A\09 btrw $3, $2 \0A\09 btsw $3, $2", "r,r,*m,i"(i16 %a0, i16 %a1, i16 *%a2, i8 7) 2889 ret void 2890 } 2891 define void @test_bt_btc_btr_bts_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 2892 ; GENERIC-LABEL: test_bt_btc_btr_bts_32: 2893 ; GENERIC: # %bb.0: 2894 ; GENERIC-NEXT: #APP 2895 ; GENERIC-NEXT: btl %esi, %edi # sched: [1:0.50] 2896 ; GENERIC-NEXT: btcl %esi, %edi # sched: [1:0.50] 2897 ; GENERIC-NEXT: btrl %esi, %edi # sched: [1:0.50] 2898 ; GENERIC-NEXT: btsl %esi, %edi # sched: [1:0.50] 2899 ; GENERIC-NEXT: btl %esi, (%rdx) # sched: [9:1.00] 2900 ; GENERIC-NEXT: btcl %esi, (%rdx) # sched: [9:1.00] 2901 ; GENERIC-NEXT: btrl %esi, (%rdx) # sched: [9:1.00] 2902 ; GENERIC-NEXT: btsl %esi, (%rdx) # sched: [9:1.00] 2903 ; GENERIC-NEXT: btl $7, %edi # sched: [1:0.50] 2904 ; GENERIC-NEXT: btcl $7, %edi # sched: [1:0.50] 2905 ; GENERIC-NEXT: btrl $7, %edi # sched: [1:0.50] 2906 ; GENERIC-NEXT: btsl $7, %edi # sched: [1:0.50] 2907 ; GENERIC-NEXT: btl $7, (%rdx) # sched: [6:0.50] 2908 ; GENERIC-NEXT: btcl $7, (%rdx) # sched: [7:1.00] 2909 ; GENERIC-NEXT: btrl $7, (%rdx) # sched: [7:1.00] 2910 ; GENERIC-NEXT: btsl $7, (%rdx) # sched: [7:1.00] 2911 ; GENERIC-NEXT: #NO_APP 2912 ; GENERIC-NEXT: retq # sched: [1:1.00] 2913 ; 2914 ; ATOM-LABEL: test_bt_btc_btr_bts_32: 2915 ; ATOM: # %bb.0: 2916 ; ATOM-NEXT: #APP 2917 ; ATOM-NEXT: btl %esi, %edi # sched: [1:1.00] 2918 ; ATOM-NEXT: btcl %esi, %edi # sched: [1:1.00] 2919 ; ATOM-NEXT: btrl %esi, %edi # sched: [1:1.00] 2920 ; ATOM-NEXT: btsl %esi, %edi # sched: [1:1.00] 2921 ; ATOM-NEXT: btl %esi, (%rdx) # sched: [9:4.50] 2922 ; ATOM-NEXT: btcl %esi, (%rdx) # sched: [11:5.50] 2923 ; ATOM-NEXT: btrl %esi, (%rdx) # sched: [11:5.50] 2924 ; ATOM-NEXT: btsl %esi, (%rdx) # sched: [11:5.50] 2925 ; ATOM-NEXT: btl $7, %edi # sched: [1:1.00] 2926 ; ATOM-NEXT: btcl $7, %edi # sched: [1:1.00] 2927 ; ATOM-NEXT: btrl $7, %edi # sched: [1:1.00] 2928 ; ATOM-NEXT: btsl $7, %edi # sched: [1:1.00] 2929 ; ATOM-NEXT: btl $7, (%rdx) # sched: [1:0.50] 2930 ; ATOM-NEXT: btcl $7, (%rdx) # sched: [2:1.00] 2931 ; ATOM-NEXT: btrl $7, (%rdx) # sched: [2:1.00] 2932 ; ATOM-NEXT: btsl $7, (%rdx) # sched: [2:1.00] 2933 ; ATOM-NEXT: #NO_APP 2934 ; ATOM-NEXT: retq # sched: [79:39.50] 2935 ; 2936 ; SLM-LABEL: test_bt_btc_btr_bts_32: 2937 ; SLM: # %bb.0: 2938 ; SLM-NEXT: #APP 2939 ; SLM-NEXT: btl %esi, %edi # sched: [1:0.50] 2940 ; SLM-NEXT: btcl %esi, %edi # sched: [1:0.50] 2941 ; SLM-NEXT: btrl %esi, %edi # sched: [1:0.50] 2942 ; SLM-NEXT: btsl %esi, %edi # sched: [1:0.50] 2943 ; SLM-NEXT: btl %esi, (%rdx) # sched: [4:1.00] 2944 ; SLM-NEXT: btcl %esi, (%rdx) # sched: [4:2.00] 2945 ; SLM-NEXT: btrl %esi, (%rdx) # sched: [4:2.00] 2946 ; SLM-NEXT: btsl %esi, (%rdx) # sched: [4:2.00] 2947 ; SLM-NEXT: btl $7, %edi # sched: [1:0.50] 2948 ; SLM-NEXT: btcl $7, %edi # sched: [1:0.50] 2949 ; SLM-NEXT: btrl $7, %edi # sched: [1:0.50] 2950 ; SLM-NEXT: btsl $7, %edi # sched: [1:0.50] 2951 ; SLM-NEXT: btl $7, (%rdx) # sched: [1:0.50] 2952 ; SLM-NEXT: btcl $7, (%rdx) # sched: [4:2.00] 2953 ; SLM-NEXT: btrl $7, (%rdx) # sched: [4:2.00] 2954 ; SLM-NEXT: btsl $7, (%rdx) # sched: [4:2.00] 2955 ; SLM-NEXT: #NO_APP 2956 ; SLM-NEXT: retq # sched: [4:1.00] 2957 ; 2958 ; SANDY-LABEL: test_bt_btc_btr_bts_32: 2959 ; SANDY: # %bb.0: 2960 ; SANDY-NEXT: #APP 2961 ; SANDY-NEXT: btl %esi, %edi # sched: [1:0.50] 2962 ; SANDY-NEXT: btcl %esi, %edi # sched: [1:0.50] 2963 ; SANDY-NEXT: btrl %esi, %edi # sched: [1:0.50] 2964 ; SANDY-NEXT: btsl %esi, %edi # sched: [1:0.50] 2965 ; SANDY-NEXT: btl %esi, (%rdx) # sched: [9:1.00] 2966 ; SANDY-NEXT: btcl %esi, (%rdx) # sched: [9:1.00] 2967 ; SANDY-NEXT: btrl %esi, (%rdx) # sched: [9:1.00] 2968 ; SANDY-NEXT: btsl %esi, (%rdx) # sched: [9:1.00] 2969 ; SANDY-NEXT: btl $7, %edi # sched: [1:0.50] 2970 ; SANDY-NEXT: btcl $7, %edi # sched: [1:0.50] 2971 ; SANDY-NEXT: btrl $7, %edi # sched: [1:0.50] 2972 ; SANDY-NEXT: btsl $7, %edi # sched: [1:0.50] 2973 ; SANDY-NEXT: btl $7, (%rdx) # sched: [6:0.50] 2974 ; SANDY-NEXT: btcl $7, (%rdx) # sched: [7:1.00] 2975 ; SANDY-NEXT: btrl $7, (%rdx) # sched: [7:1.00] 2976 ; SANDY-NEXT: btsl $7, (%rdx) # sched: [7:1.00] 2977 ; SANDY-NEXT: #NO_APP 2978 ; SANDY-NEXT: retq # sched: [1:1.00] 2979 ; 2980 ; HASWELL-LABEL: test_bt_btc_btr_bts_32: 2981 ; HASWELL: # %bb.0: 2982 ; HASWELL-NEXT: #APP 2983 ; HASWELL-NEXT: btl %esi, %edi # sched: [1:0.50] 2984 ; HASWELL-NEXT: btcl %esi, %edi # sched: [1:0.50] 2985 ; HASWELL-NEXT: btrl %esi, %edi # sched: [1:0.50] 2986 ; HASWELL-NEXT: btsl %esi, %edi # sched: [1:0.50] 2987 ; HASWELL-NEXT: btl %esi, (%rdx) # sched: [1:2.50] 2988 ; HASWELL-NEXT: btcl %esi, (%rdx) # sched: [1:2.75] 2989 ; HASWELL-NEXT: btrl %esi, (%rdx) # sched: [1:2.75] 2990 ; HASWELL-NEXT: btsl %esi, (%rdx) # sched: [1:2.75] 2991 ; HASWELL-NEXT: btl $7, %edi # sched: [1:0.50] 2992 ; HASWELL-NEXT: btcl $7, %edi # sched: [1:0.50] 2993 ; HASWELL-NEXT: btrl $7, %edi # sched: [1:0.50] 2994 ; HASWELL-NEXT: btsl $7, %edi # sched: [1:0.50] 2995 ; HASWELL-NEXT: btl $7, (%rdx) # sched: [6:0.50] 2996 ; HASWELL-NEXT: btcl $7, (%rdx) # sched: [7:1.00] 2997 ; HASWELL-NEXT: btrl $7, (%rdx) # sched: [7:1.00] 2998 ; HASWELL-NEXT: btsl $7, (%rdx) # sched: [7:1.00] 2999 ; HASWELL-NEXT: #NO_APP 3000 ; HASWELL-NEXT: retq # sched: [7:1.00] 3001 ; 3002 ; BROADWELL-LABEL: test_bt_btc_btr_bts_32: 3003 ; BROADWELL: # %bb.0: 3004 ; BROADWELL-NEXT: #APP 3005 ; BROADWELL-NEXT: btl %esi, %edi # sched: [1:0.50] 3006 ; BROADWELL-NEXT: btcl %esi, %edi # sched: [1:0.50] 3007 ; BROADWELL-NEXT: btrl %esi, %edi # sched: [1:0.50] 3008 ; BROADWELL-NEXT: btsl %esi, %edi # sched: [1:0.50] 3009 ; BROADWELL-NEXT: btl %esi, (%rdx) # sched: [6:0.50] 3010 ; BROADWELL-NEXT: btcl %esi, (%rdx) # sched: [6:1.00] 3011 ; BROADWELL-NEXT: btrl %esi, (%rdx) # sched: [6:1.00] 3012 ; BROADWELL-NEXT: btsl %esi, (%rdx) # sched: [6:1.00] 3013 ; BROADWELL-NEXT: btl $7, %edi # sched: [1:0.50] 3014 ; BROADWELL-NEXT: btcl $7, %edi # sched: [1:0.50] 3015 ; BROADWELL-NEXT: btrl $7, %edi # sched: [1:0.50] 3016 ; BROADWELL-NEXT: btsl $7, %edi # sched: [1:0.50] 3017 ; BROADWELL-NEXT: btl $7, (%rdx) # sched: [6:0.50] 3018 ; BROADWELL-NEXT: btcl $7, (%rdx) # sched: [6:1.00] 3019 ; BROADWELL-NEXT: btrl $7, (%rdx) # sched: [6:1.00] 3020 ; BROADWELL-NEXT: btsl $7, (%rdx) # sched: [6:1.00] 3021 ; BROADWELL-NEXT: #NO_APP 3022 ; BROADWELL-NEXT: retq # sched: [7:1.00] 3023 ; 3024 ; SKYLAKE-LABEL: test_bt_btc_btr_bts_32: 3025 ; SKYLAKE: # %bb.0: 3026 ; SKYLAKE-NEXT: #APP 3027 ; SKYLAKE-NEXT: btl %esi, %edi # sched: [1:0.50] 3028 ; SKYLAKE-NEXT: btcl %esi, %edi # sched: [1:0.50] 3029 ; SKYLAKE-NEXT: btrl %esi, %edi # sched: [1:0.50] 3030 ; SKYLAKE-NEXT: btsl %esi, %edi # sched: [1:0.50] 3031 ; SKYLAKE-NEXT: btl %esi, (%rdx) # sched: [6:0.50] 3032 ; SKYLAKE-NEXT: btcl %esi, (%rdx) # sched: [6:1.00] 3033 ; SKYLAKE-NEXT: btrl %esi, (%rdx) # sched: [6:1.00] 3034 ; SKYLAKE-NEXT: btsl %esi, (%rdx) # sched: [6:1.00] 3035 ; SKYLAKE-NEXT: btl $7, %edi # sched: [1:0.50] 3036 ; SKYLAKE-NEXT: btcl $7, %edi # sched: [1:0.50] 3037 ; SKYLAKE-NEXT: btrl $7, %edi # sched: [1:0.50] 3038 ; SKYLAKE-NEXT: btsl $7, %edi # sched: [1:0.50] 3039 ; SKYLAKE-NEXT: btl $7, (%rdx) # sched: [6:0.50] 3040 ; SKYLAKE-NEXT: btcl $7, (%rdx) # sched: [6:1.00] 3041 ; SKYLAKE-NEXT: btrl $7, (%rdx) # sched: [6:1.00] 3042 ; SKYLAKE-NEXT: btsl $7, (%rdx) # sched: [6:1.00] 3043 ; SKYLAKE-NEXT: #NO_APP 3044 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 3045 ; 3046 ; SKX-LABEL: test_bt_btc_btr_bts_32: 3047 ; SKX: # %bb.0: 3048 ; SKX-NEXT: #APP 3049 ; SKX-NEXT: btl %esi, %edi # sched: [1:0.50] 3050 ; SKX-NEXT: btcl %esi, %edi # sched: [1:0.50] 3051 ; SKX-NEXT: btrl %esi, %edi # sched: [1:0.50] 3052 ; SKX-NEXT: btsl %esi, %edi # sched: [1:0.50] 3053 ; SKX-NEXT: btl %esi, (%rdx) # sched: [6:0.50] 3054 ; SKX-NEXT: btcl %esi, (%rdx) # sched: [6:1.00] 3055 ; SKX-NEXT: btrl %esi, (%rdx) # sched: [6:1.00] 3056 ; SKX-NEXT: btsl %esi, (%rdx) # sched: [6:1.00] 3057 ; SKX-NEXT: btl $7, %edi # sched: [1:0.50] 3058 ; SKX-NEXT: btcl $7, %edi # sched: [1:0.50] 3059 ; SKX-NEXT: btrl $7, %edi # sched: [1:0.50] 3060 ; SKX-NEXT: btsl $7, %edi # sched: [1:0.50] 3061 ; SKX-NEXT: btl $7, (%rdx) # sched: [6:0.50] 3062 ; SKX-NEXT: btcl $7, (%rdx) # sched: [6:1.00] 3063 ; SKX-NEXT: btrl $7, (%rdx) # sched: [6:1.00] 3064 ; SKX-NEXT: btsl $7, (%rdx) # sched: [6:1.00] 3065 ; SKX-NEXT: #NO_APP 3066 ; SKX-NEXT: retq # sched: [7:1.00] 3067 ; 3068 ; BTVER2-LABEL: test_bt_btc_btr_bts_32: 3069 ; BTVER2: # %bb.0: 3070 ; BTVER2-NEXT: #APP 3071 ; BTVER2-NEXT: btl %esi, %edi # sched: [1:0.50] 3072 ; BTVER2-NEXT: btcl %esi, %edi # sched: [1:0.50] 3073 ; BTVER2-NEXT: btrl %esi, %edi # sched: [1:0.50] 3074 ; BTVER2-NEXT: btsl %esi, %edi # sched: [1:0.50] 3075 ; BTVER2-NEXT: btl %esi, (%rdx) # sched: [4:1.00] 3076 ; BTVER2-NEXT: btcl %esi, (%rdx) # sched: [4:1.00] 3077 ; BTVER2-NEXT: btrl %esi, (%rdx) # sched: [4:1.00] 3078 ; BTVER2-NEXT: btsl %esi, (%rdx) # sched: [4:1.00] 3079 ; BTVER2-NEXT: btl $7, %edi # sched: [1:0.50] 3080 ; BTVER2-NEXT: btcl $7, %edi # sched: [1:0.50] 3081 ; BTVER2-NEXT: btrl $7, %edi # sched: [1:0.50] 3082 ; BTVER2-NEXT: btsl $7, %edi # sched: [1:0.50] 3083 ; BTVER2-NEXT: btl $7, (%rdx) # sched: [1:0.50] 3084 ; BTVER2-NEXT: btcl $7, (%rdx) # sched: [4:1.00] 3085 ; BTVER2-NEXT: btrl $7, (%rdx) # sched: [4:1.00] 3086 ; BTVER2-NEXT: btsl $7, (%rdx) # sched: [4:1.00] 3087 ; BTVER2-NEXT: #NO_APP 3088 ; BTVER2-NEXT: retq # sched: [4:1.00] 3089 ; 3090 ; ZNVER1-LABEL: test_bt_btc_btr_bts_32: 3091 ; ZNVER1: # %bb.0: 3092 ; ZNVER1-NEXT: #APP 3093 ; ZNVER1-NEXT: btl %esi, %edi # sched: [1:0.25] 3094 ; ZNVER1-NEXT: btcl %esi, %edi # sched: [2:0.25] 3095 ; ZNVER1-NEXT: btrl %esi, %edi # sched: [2:0.25] 3096 ; ZNVER1-NEXT: btsl %esi, %edi # sched: [2:0.25] 3097 ; ZNVER1-NEXT: btl %esi, (%rdx) # sched: [5:0.50] 3098 ; ZNVER1-NEXT: btcl %esi, (%rdx) # sched: [6:0.50] 3099 ; ZNVER1-NEXT: btrl %esi, (%rdx) # sched: [6:0.50] 3100 ; ZNVER1-NEXT: btsl %esi, (%rdx) # sched: [6:0.50] 3101 ; ZNVER1-NEXT: btl $7, %edi # sched: [1:0.25] 3102 ; ZNVER1-NEXT: btcl $7, %edi # sched: [2:0.25] 3103 ; ZNVER1-NEXT: btrl $7, %edi # sched: [2:0.25] 3104 ; ZNVER1-NEXT: btsl $7, %edi # sched: [2:0.25] 3105 ; ZNVER1-NEXT: btl $7, (%rdx) # sched: [5:0.50] 3106 ; ZNVER1-NEXT: btcl $7, (%rdx) # sched: [6:0.50] 3107 ; ZNVER1-NEXT: btrl $7, (%rdx) # sched: [6:0.50] 3108 ; ZNVER1-NEXT: btsl $7, (%rdx) # sched: [6:0.50] 3109 ; ZNVER1-NEXT: #NO_APP 3110 ; ZNVER1-NEXT: retq # sched: [1:0.50] 3111 call void asm sideeffect "btl $1, $0 \0A\09 btcl $1, $0 \0A\09 btrl $1, $0 \0A\09 btsl $1, $0 \0A\09 btl $1, $2 \0A\09 btcl $1, $2 \0A\09 btrl $1, $2 \0A\09 btsl $1, $2 \0A\09 btl $3, $0 \0A\09 btcl $3, $0 \0A\09 btrl $3, $0 \0A\09 btsl $3, $0 \0A\09 btl $3, $2 \0A\09 btcl $3, $2 \0A\09 btrl $3, $2 \0A\09 btsl $3, $2", "r,r,*m,i"(i32 %a0, i32 %a1, i32 *%a2, i8 7) 3112 ret void 3113 } 3114 define void @test_bt_btc_btr_bts_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 3115 ; GENERIC-LABEL: test_bt_btc_btr_bts_64: 3116 ; GENERIC: # %bb.0: 3117 ; GENERIC-NEXT: #APP 3118 ; GENERIC-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3119 ; GENERIC-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3120 ; GENERIC-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3121 ; GENERIC-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3122 ; GENERIC-NEXT: btq %rsi, (%rdx) # sched: [9:1.00] 3123 ; GENERIC-NEXT: btcq %rsi, (%rdx) # sched: [9:1.00] 3124 ; GENERIC-NEXT: btrq %rsi, (%rdx) # sched: [9:1.00] 3125 ; GENERIC-NEXT: btsq %rsi, (%rdx) # sched: [9:1.00] 3126 ; GENERIC-NEXT: btq $7, %rdi # sched: [1:0.50] 3127 ; GENERIC-NEXT: btcq $7, %rdi # sched: [1:0.50] 3128 ; GENERIC-NEXT: btrq $7, %rdi # sched: [1:0.50] 3129 ; GENERIC-NEXT: btsq $7, %rdi # sched: [1:0.50] 3130 ; GENERIC-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3131 ; GENERIC-NEXT: btcq $7, (%rdx) # sched: [7:1.00] 3132 ; GENERIC-NEXT: btrq $7, (%rdx) # sched: [7:1.00] 3133 ; GENERIC-NEXT: btsq $7, (%rdx) # sched: [7:1.00] 3134 ; GENERIC-NEXT: #NO_APP 3135 ; GENERIC-NEXT: retq # sched: [1:1.00] 3136 ; 3137 ; ATOM-LABEL: test_bt_btc_btr_bts_64: 3138 ; ATOM: # %bb.0: 3139 ; ATOM-NEXT: #APP 3140 ; ATOM-NEXT: btq %rsi, %rdi # sched: [1:1.00] 3141 ; ATOM-NEXT: btcq %rsi, %rdi # sched: [1:1.00] 3142 ; ATOM-NEXT: btrq %rsi, %rdi # sched: [1:1.00] 3143 ; ATOM-NEXT: btsq %rsi, %rdi # sched: [1:1.00] 3144 ; ATOM-NEXT: btq %rsi, (%rdx) # sched: [9:4.50] 3145 ; ATOM-NEXT: btcq %rsi, (%rdx) # sched: [11:5.50] 3146 ; ATOM-NEXT: btrq %rsi, (%rdx) # sched: [11:5.50] 3147 ; ATOM-NEXT: btsq %rsi, (%rdx) # sched: [11:5.50] 3148 ; ATOM-NEXT: btq $7, %rdi # sched: [1:1.00] 3149 ; ATOM-NEXT: btcq $7, %rdi # sched: [1:1.00] 3150 ; ATOM-NEXT: btrq $7, %rdi # sched: [1:1.00] 3151 ; ATOM-NEXT: btsq $7, %rdi # sched: [1:1.00] 3152 ; ATOM-NEXT: btq $7, (%rdx) # sched: [1:0.50] 3153 ; ATOM-NEXT: btcq $7, (%rdx) # sched: [2:1.00] 3154 ; ATOM-NEXT: btrq $7, (%rdx) # sched: [2:1.00] 3155 ; ATOM-NEXT: btsq $7, (%rdx) # sched: [2:1.00] 3156 ; ATOM-NEXT: #NO_APP 3157 ; ATOM-NEXT: retq # sched: [79:39.50] 3158 ; 3159 ; SLM-LABEL: test_bt_btc_btr_bts_64: 3160 ; SLM: # %bb.0: 3161 ; SLM-NEXT: #APP 3162 ; SLM-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3163 ; SLM-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3164 ; SLM-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3165 ; SLM-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3166 ; SLM-NEXT: btq %rsi, (%rdx) # sched: [4:1.00] 3167 ; SLM-NEXT: btcq %rsi, (%rdx) # sched: [4:2.00] 3168 ; SLM-NEXT: btrq %rsi, (%rdx) # sched: [4:2.00] 3169 ; SLM-NEXT: btsq %rsi, (%rdx) # sched: [4:2.00] 3170 ; SLM-NEXT: btq $7, %rdi # sched: [1:0.50] 3171 ; SLM-NEXT: btcq $7, %rdi # sched: [1:0.50] 3172 ; SLM-NEXT: btrq $7, %rdi # sched: [1:0.50] 3173 ; SLM-NEXT: btsq $7, %rdi # sched: [1:0.50] 3174 ; SLM-NEXT: btq $7, (%rdx) # sched: [1:0.50] 3175 ; SLM-NEXT: btcq $7, (%rdx) # sched: [4:2.00] 3176 ; SLM-NEXT: btrq $7, (%rdx) # sched: [4:2.00] 3177 ; SLM-NEXT: btsq $7, (%rdx) # sched: [4:2.00] 3178 ; SLM-NEXT: #NO_APP 3179 ; SLM-NEXT: retq # sched: [4:1.00] 3180 ; 3181 ; SANDY-LABEL: test_bt_btc_btr_bts_64: 3182 ; SANDY: # %bb.0: 3183 ; SANDY-NEXT: #APP 3184 ; SANDY-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3185 ; SANDY-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3186 ; SANDY-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3187 ; SANDY-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3188 ; SANDY-NEXT: btq %rsi, (%rdx) # sched: [9:1.00] 3189 ; SANDY-NEXT: btcq %rsi, (%rdx) # sched: [9:1.00] 3190 ; SANDY-NEXT: btrq %rsi, (%rdx) # sched: [9:1.00] 3191 ; SANDY-NEXT: btsq %rsi, (%rdx) # sched: [9:1.00] 3192 ; SANDY-NEXT: btq $7, %rdi # sched: [1:0.50] 3193 ; SANDY-NEXT: btcq $7, %rdi # sched: [1:0.50] 3194 ; SANDY-NEXT: btrq $7, %rdi # sched: [1:0.50] 3195 ; SANDY-NEXT: btsq $7, %rdi # sched: [1:0.50] 3196 ; SANDY-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3197 ; SANDY-NEXT: btcq $7, (%rdx) # sched: [7:1.00] 3198 ; SANDY-NEXT: btrq $7, (%rdx) # sched: [7:1.00] 3199 ; SANDY-NEXT: btsq $7, (%rdx) # sched: [7:1.00] 3200 ; SANDY-NEXT: #NO_APP 3201 ; SANDY-NEXT: retq # sched: [1:1.00] 3202 ; 3203 ; HASWELL-LABEL: test_bt_btc_btr_bts_64: 3204 ; HASWELL: # %bb.0: 3205 ; HASWELL-NEXT: #APP 3206 ; HASWELL-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3207 ; HASWELL-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3208 ; HASWELL-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3209 ; HASWELL-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3210 ; HASWELL-NEXT: btq %rsi, (%rdx) # sched: [1:2.50] 3211 ; HASWELL-NEXT: btcq %rsi, (%rdx) # sched: [1:2.75] 3212 ; HASWELL-NEXT: btrq %rsi, (%rdx) # sched: [1:2.75] 3213 ; HASWELL-NEXT: btsq %rsi, (%rdx) # sched: [1:2.75] 3214 ; HASWELL-NEXT: btq $7, %rdi # sched: [1:0.50] 3215 ; HASWELL-NEXT: btcq $7, %rdi # sched: [1:0.50] 3216 ; HASWELL-NEXT: btrq $7, %rdi # sched: [1:0.50] 3217 ; HASWELL-NEXT: btsq $7, %rdi # sched: [1:0.50] 3218 ; HASWELL-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3219 ; HASWELL-NEXT: btcq $7, (%rdx) # sched: [7:1.00] 3220 ; HASWELL-NEXT: btrq $7, (%rdx) # sched: [7:1.00] 3221 ; HASWELL-NEXT: btsq $7, (%rdx) # sched: [7:1.00] 3222 ; HASWELL-NEXT: #NO_APP 3223 ; HASWELL-NEXT: retq # sched: [7:1.00] 3224 ; 3225 ; BROADWELL-LABEL: test_bt_btc_btr_bts_64: 3226 ; BROADWELL: # %bb.0: 3227 ; BROADWELL-NEXT: #APP 3228 ; BROADWELL-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3229 ; BROADWELL-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3230 ; BROADWELL-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3231 ; BROADWELL-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3232 ; BROADWELL-NEXT: btq %rsi, (%rdx) # sched: [6:0.50] 3233 ; BROADWELL-NEXT: btcq %rsi, (%rdx) # sched: [6:1.00] 3234 ; BROADWELL-NEXT: btrq %rsi, (%rdx) # sched: [6:1.00] 3235 ; BROADWELL-NEXT: btsq %rsi, (%rdx) # sched: [6:1.00] 3236 ; BROADWELL-NEXT: btq $7, %rdi # sched: [1:0.50] 3237 ; BROADWELL-NEXT: btcq $7, %rdi # sched: [1:0.50] 3238 ; BROADWELL-NEXT: btrq $7, %rdi # sched: [1:0.50] 3239 ; BROADWELL-NEXT: btsq $7, %rdi # sched: [1:0.50] 3240 ; BROADWELL-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3241 ; BROADWELL-NEXT: btcq $7, (%rdx) # sched: [6:1.00] 3242 ; BROADWELL-NEXT: btrq $7, (%rdx) # sched: [6:1.00] 3243 ; BROADWELL-NEXT: btsq $7, (%rdx) # sched: [6:1.00] 3244 ; BROADWELL-NEXT: #NO_APP 3245 ; BROADWELL-NEXT: retq # sched: [7:1.00] 3246 ; 3247 ; SKYLAKE-LABEL: test_bt_btc_btr_bts_64: 3248 ; SKYLAKE: # %bb.0: 3249 ; SKYLAKE-NEXT: #APP 3250 ; SKYLAKE-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3251 ; SKYLAKE-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3252 ; SKYLAKE-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3253 ; SKYLAKE-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3254 ; SKYLAKE-NEXT: btq %rsi, (%rdx) # sched: [6:0.50] 3255 ; SKYLAKE-NEXT: btcq %rsi, (%rdx) # sched: [6:1.00] 3256 ; SKYLAKE-NEXT: btrq %rsi, (%rdx) # sched: [6:1.00] 3257 ; SKYLAKE-NEXT: btsq %rsi, (%rdx) # sched: [6:1.00] 3258 ; SKYLAKE-NEXT: btq $7, %rdi # sched: [1:0.50] 3259 ; SKYLAKE-NEXT: btcq $7, %rdi # sched: [1:0.50] 3260 ; SKYLAKE-NEXT: btrq $7, %rdi # sched: [1:0.50] 3261 ; SKYLAKE-NEXT: btsq $7, %rdi # sched: [1:0.50] 3262 ; SKYLAKE-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3263 ; SKYLAKE-NEXT: btcq $7, (%rdx) # sched: [6:1.00] 3264 ; SKYLAKE-NEXT: btrq $7, (%rdx) # sched: [6:1.00] 3265 ; SKYLAKE-NEXT: btsq $7, (%rdx) # sched: [6:1.00] 3266 ; SKYLAKE-NEXT: #NO_APP 3267 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 3268 ; 3269 ; SKX-LABEL: test_bt_btc_btr_bts_64: 3270 ; SKX: # %bb.0: 3271 ; SKX-NEXT: #APP 3272 ; SKX-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3273 ; SKX-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3274 ; SKX-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3275 ; SKX-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3276 ; SKX-NEXT: btq %rsi, (%rdx) # sched: [6:0.50] 3277 ; SKX-NEXT: btcq %rsi, (%rdx) # sched: [6:1.00] 3278 ; SKX-NEXT: btrq %rsi, (%rdx) # sched: [6:1.00] 3279 ; SKX-NEXT: btsq %rsi, (%rdx) # sched: [6:1.00] 3280 ; SKX-NEXT: btq $7, %rdi # sched: [1:0.50] 3281 ; SKX-NEXT: btcq $7, %rdi # sched: [1:0.50] 3282 ; SKX-NEXT: btrq $7, %rdi # sched: [1:0.50] 3283 ; SKX-NEXT: btsq $7, %rdi # sched: [1:0.50] 3284 ; SKX-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3285 ; SKX-NEXT: btcq $7, (%rdx) # sched: [6:1.00] 3286 ; SKX-NEXT: btrq $7, (%rdx) # sched: [6:1.00] 3287 ; SKX-NEXT: btsq $7, (%rdx) # sched: [6:1.00] 3288 ; SKX-NEXT: #NO_APP 3289 ; SKX-NEXT: retq # sched: [7:1.00] 3290 ; 3291 ; BTVER2-LABEL: test_bt_btc_btr_bts_64: 3292 ; BTVER2: # %bb.0: 3293 ; BTVER2-NEXT: #APP 3294 ; BTVER2-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3295 ; BTVER2-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3296 ; BTVER2-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3297 ; BTVER2-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3298 ; BTVER2-NEXT: btq %rsi, (%rdx) # sched: [4:1.00] 3299 ; BTVER2-NEXT: btcq %rsi, (%rdx) # sched: [4:1.00] 3300 ; BTVER2-NEXT: btrq %rsi, (%rdx) # sched: [4:1.00] 3301 ; BTVER2-NEXT: btsq %rsi, (%rdx) # sched: [4:1.00] 3302 ; BTVER2-NEXT: btq $7, %rdi # sched: [1:0.50] 3303 ; BTVER2-NEXT: btcq $7, %rdi # sched: [1:0.50] 3304 ; BTVER2-NEXT: btrq $7, %rdi # sched: [1:0.50] 3305 ; BTVER2-NEXT: btsq $7, %rdi # sched: [1:0.50] 3306 ; BTVER2-NEXT: btq $7, (%rdx) # sched: [1:0.50] 3307 ; BTVER2-NEXT: btcq $7, (%rdx) # sched: [4:1.00] 3308 ; BTVER2-NEXT: btrq $7, (%rdx) # sched: [4:1.00] 3309 ; BTVER2-NEXT: btsq $7, (%rdx) # sched: [4:1.00] 3310 ; BTVER2-NEXT: #NO_APP 3311 ; BTVER2-NEXT: retq # sched: [4:1.00] 3312 ; 3313 ; ZNVER1-LABEL: test_bt_btc_btr_bts_64: 3314 ; ZNVER1: # %bb.0: 3315 ; ZNVER1-NEXT: #APP 3316 ; ZNVER1-NEXT: btq %rsi, %rdi # sched: [1:0.25] 3317 ; ZNVER1-NEXT: btcq %rsi, %rdi # sched: [2:0.25] 3318 ; ZNVER1-NEXT: btrq %rsi, %rdi # sched: [2:0.25] 3319 ; ZNVER1-NEXT: btsq %rsi, %rdi # sched: [2:0.25] 3320 ; ZNVER1-NEXT: btq %rsi, (%rdx) # sched: [5:0.50] 3321 ; ZNVER1-NEXT: btcq %rsi, (%rdx) # sched: [6:0.50] 3322 ; ZNVER1-NEXT: btrq %rsi, (%rdx) # sched: [6:0.50] 3323 ; ZNVER1-NEXT: btsq %rsi, (%rdx) # sched: [6:0.50] 3324 ; ZNVER1-NEXT: btq $7, %rdi # sched: [1:0.25] 3325 ; ZNVER1-NEXT: btcq $7, %rdi # sched: [2:0.25] 3326 ; ZNVER1-NEXT: btrq $7, %rdi # sched: [2:0.25] 3327 ; ZNVER1-NEXT: btsq $7, %rdi # sched: [2:0.25] 3328 ; ZNVER1-NEXT: btq $7, (%rdx) # sched: [5:0.50] 3329 ; ZNVER1-NEXT: btcq $7, (%rdx) # sched: [6:0.50] 3330 ; ZNVER1-NEXT: btrq $7, (%rdx) # sched: [6:0.50] 3331 ; ZNVER1-NEXT: btsq $7, (%rdx) # sched: [6:0.50] 3332 ; ZNVER1-NEXT: #NO_APP 3333 ; ZNVER1-NEXT: retq # sched: [1:0.50] 3334 call void asm sideeffect "btq $1, $0 \0A\09 btcq $1, $0 \0A\09 btrq $1, $0 \0A\09 btsq $1, $0 \0A\09 btq $1, $2 \0A\09 btcq $1, $2 \0A\09 btrq $1, $2 \0A\09 btsq $1, $2 \0A\09 btq $3, $0 \0A\09 btcq $3, $0 \0A\09 btrq $3, $0 \0A\09 btsq $3, $0 \0A\09 btq $3, $2 \0A\09 btcq $3, $2 \0A\09 btrq $3, $2 \0A\09 btsq $3, $2", "r,r,*m,i"(i64 %a0, i64 %a1, i64 *%a2, i8 7) 3335 ret void 3336 } 3337 3338 ; TODO - test_call 3339 3340 define void @test_cbw_cdq_cdqe_cqo_cwd_cwde() optsize { 3341 ; GENERIC-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3342 ; GENERIC: # %bb.0: 3343 ; GENERIC-NEXT: #APP 3344 ; GENERIC-NEXT: cbtw # sched: [1:0.33] 3345 ; GENERIC-NEXT: cltd # sched: [1:0.50] 3346 ; GENERIC-NEXT: cltq # sched: [1:0.33] 3347 ; GENERIC-NEXT: cqto # sched: [1:0.50] 3348 ; GENERIC-NEXT: cwtd # sched: [2:1.00] 3349 ; GENERIC-NEXT: cwtl # sched: [1:0.33] 3350 ; GENERIC-NEXT: #NO_APP 3351 ; GENERIC-NEXT: retq # sched: [1:1.00] 3352 ; 3353 ; ATOM-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3354 ; ATOM: # %bb.0: 3355 ; ATOM-NEXT: #APP 3356 ; ATOM-NEXT: cbtw # sched: [4:2.00] 3357 ; ATOM-NEXT: cltd # sched: [4:2.00] 3358 ; ATOM-NEXT: cltq # sched: [4:2.00] 3359 ; ATOM-NEXT: cqto # sched: [4:2.00] 3360 ; ATOM-NEXT: cwtd # sched: [4:2.00] 3361 ; ATOM-NEXT: cwtl # sched: [4:2.00] 3362 ; ATOM-NEXT: #NO_APP 3363 ; ATOM-NEXT: retq # sched: [79:39.50] 3364 ; 3365 ; SLM-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3366 ; SLM: # %bb.0: 3367 ; SLM-NEXT: #APP 3368 ; SLM-NEXT: cbtw # sched: [1:0.50] 3369 ; SLM-NEXT: cltd # sched: [1:0.50] 3370 ; SLM-NEXT: cltq # sched: [1:0.50] 3371 ; SLM-NEXT: cqto # sched: [1:0.50] 3372 ; SLM-NEXT: cwtd # sched: [1:0.50] 3373 ; SLM-NEXT: cwtl # sched: [1:0.50] 3374 ; SLM-NEXT: #NO_APP 3375 ; SLM-NEXT: retq # sched: [4:1.00] 3376 ; 3377 ; SANDY-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3378 ; SANDY: # %bb.0: 3379 ; SANDY-NEXT: #APP 3380 ; SANDY-NEXT: cbtw # sched: [1:0.33] 3381 ; SANDY-NEXT: cltd # sched: [1:0.50] 3382 ; SANDY-NEXT: cltq # sched: [1:0.33] 3383 ; SANDY-NEXT: cqto # sched: [1:0.50] 3384 ; SANDY-NEXT: cwtd # sched: [2:1.00] 3385 ; SANDY-NEXT: cwtl # sched: [1:0.33] 3386 ; SANDY-NEXT: #NO_APP 3387 ; SANDY-NEXT: retq # sched: [1:1.00] 3388 ; 3389 ; HASWELL-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3390 ; HASWELL: # %bb.0: 3391 ; HASWELL-NEXT: #APP 3392 ; HASWELL-NEXT: cbtw # sched: [1:0.25] 3393 ; HASWELL-NEXT: cltd # sched: [1:0.50] 3394 ; HASWELL-NEXT: cltq # sched: [1:0.25] 3395 ; HASWELL-NEXT: cqto # sched: [1:0.50] 3396 ; HASWELL-NEXT: cwtd # sched: [2:0.50] 3397 ; HASWELL-NEXT: cwtl # sched: [1:0.25] 3398 ; HASWELL-NEXT: #NO_APP 3399 ; HASWELL-NEXT: retq # sched: [7:1.00] 3400 ; 3401 ; BROADWELL-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3402 ; BROADWELL: # %bb.0: 3403 ; BROADWELL-NEXT: #APP 3404 ; BROADWELL-NEXT: cbtw # sched: [1:0.25] 3405 ; BROADWELL-NEXT: cltd # sched: [1:0.50] 3406 ; BROADWELL-NEXT: cltq # sched: [1:0.25] 3407 ; BROADWELL-NEXT: cqto # sched: [1:0.50] 3408 ; BROADWELL-NEXT: cwtd # sched: [2:0.50] 3409 ; BROADWELL-NEXT: cwtl # sched: [1:0.25] 3410 ; BROADWELL-NEXT: #NO_APP 3411 ; BROADWELL-NEXT: retq # sched: [7:1.00] 3412 ; 3413 ; SKYLAKE-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3414 ; SKYLAKE: # %bb.0: 3415 ; SKYLAKE-NEXT: #APP 3416 ; SKYLAKE-NEXT: cbtw # sched: [1:0.25] 3417 ; SKYLAKE-NEXT: cltd # sched: [1:0.50] 3418 ; SKYLAKE-NEXT: cltq # sched: [1:0.25] 3419 ; SKYLAKE-NEXT: cqto # sched: [1:0.50] 3420 ; SKYLAKE-NEXT: cwtd # sched: [2:0.50] 3421 ; SKYLAKE-NEXT: cwtl # sched: [1:0.25] 3422 ; SKYLAKE-NEXT: #NO_APP 3423 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 3424 ; 3425 ; SKX-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3426 ; SKX: # %bb.0: 3427 ; SKX-NEXT: #APP 3428 ; SKX-NEXT: cbtw # sched: [1:0.25] 3429 ; SKX-NEXT: cltd # sched: [1:0.50] 3430 ; SKX-NEXT: cltq # sched: [1:0.25] 3431 ; SKX-NEXT: cqto # sched: [1:0.50] 3432 ; SKX-NEXT: cwtd # sched: [2:0.50] 3433 ; SKX-NEXT: cwtl # sched: [1:0.25] 3434 ; SKX-NEXT: #NO_APP 3435 ; SKX-NEXT: retq # sched: [7:1.00] 3436 ; 3437 ; BTVER2-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3438 ; BTVER2: # %bb.0: 3439 ; BTVER2-NEXT: #APP 3440 ; BTVER2-NEXT: cbtw # sched: [1:0.50] 3441 ; BTVER2-NEXT: cltd # sched: [1:0.50] 3442 ; BTVER2-NEXT: cltq # sched: [1:0.50] 3443 ; BTVER2-NEXT: cqto # sched: [1:0.50] 3444 ; BTVER2-NEXT: cwtd # sched: [1:0.50] 3445 ; BTVER2-NEXT: cwtl # sched: [1:0.50] 3446 ; BTVER2-NEXT: #NO_APP 3447 ; BTVER2-NEXT: retq # sched: [4:1.00] 3448 ; 3449 ; ZNVER1-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3450 ; ZNVER1: # %bb.0: 3451 ; ZNVER1-NEXT: #APP 3452 ; ZNVER1-NEXT: cbtw # sched: [1:0.25] 3453 ; ZNVER1-NEXT: cltd # sched: [1:0.25] 3454 ; ZNVER1-NEXT: cltq # sched: [1:0.25] 3455 ; ZNVER1-NEXT: cqto # sched: [1:0.25] 3456 ; ZNVER1-NEXT: cwtd # sched: [1:0.25] 3457 ; ZNVER1-NEXT: cwtl # sched: [1:0.25] 3458 ; ZNVER1-NEXT: #NO_APP 3459 ; ZNVER1-NEXT: retq # sched: [1:0.50] 3460 tail call void asm "cbw \0A\09 cdq \0A\09 cdqe \0A\09 cqo \0A\09 cwd \0A\09 cwde", ""() nounwind 3461 ret void 3462 } 3463 3464 define void @test_clc_cld_cmc() optsize { 3465 ; GENERIC-LABEL: test_clc_cld_cmc: 3466 ; GENERIC: # %bb.0: 3467 ; GENERIC-NEXT: #APP 3468 ; GENERIC-NEXT: clc # sched: [1:0.25] 3469 ; GENERIC-NEXT: cld # sched: [1:0.33] 3470 ; GENERIC-NEXT: cmc # sched: [1:0.33] 3471 ; GENERIC-NEXT: #NO_APP 3472 ; GENERIC-NEXT: retq # sched: [1:1.00] 3473 ; 3474 ; ATOM-LABEL: test_clc_cld_cmc: 3475 ; ATOM: # %bb.0: 3476 ; ATOM-NEXT: #APP 3477 ; ATOM-NEXT: clc # sched: [1:0.50] 3478 ; ATOM-NEXT: cld # sched: [3:1.50] 3479 ; ATOM-NEXT: cmc # sched: [1:0.50] 3480 ; ATOM-NEXT: #NO_APP 3481 ; ATOM-NEXT: retq # sched: [79:39.50] 3482 ; 3483 ; SLM-LABEL: test_clc_cld_cmc: 3484 ; SLM: # %bb.0: 3485 ; SLM-NEXT: #APP 3486 ; SLM-NEXT: clc # sched: [1:0.50] 3487 ; SLM-NEXT: cld # sched: [1:0.50] 3488 ; SLM-NEXT: cmc # sched: [1:0.50] 3489 ; SLM-NEXT: #NO_APP 3490 ; SLM-NEXT: retq # sched: [4:1.00] 3491 ; 3492 ; SANDY-LABEL: test_clc_cld_cmc: 3493 ; SANDY: # %bb.0: 3494 ; SANDY-NEXT: #APP 3495 ; SANDY-NEXT: clc # sched: [1:0.25] 3496 ; SANDY-NEXT: cld # sched: [1:0.33] 3497 ; SANDY-NEXT: cmc # sched: [1:0.33] 3498 ; SANDY-NEXT: #NO_APP 3499 ; SANDY-NEXT: retq # sched: [1:1.00] 3500 ; 3501 ; HASWELL-LABEL: test_clc_cld_cmc: 3502 ; HASWELL: # %bb.0: 3503 ; HASWELL-NEXT: #APP 3504 ; HASWELL-NEXT: clc # sched: [1:0.25] 3505 ; HASWELL-NEXT: cld # sched: [3:1.00] 3506 ; HASWELL-NEXT: cmc # sched: [1:0.25] 3507 ; HASWELL-NEXT: #NO_APP 3508 ; HASWELL-NEXT: retq # sched: [7:1.00] 3509 ; 3510 ; BROADWELL-LABEL: test_clc_cld_cmc: 3511 ; BROADWELL: # %bb.0: 3512 ; BROADWELL-NEXT: #APP 3513 ; BROADWELL-NEXT: clc # sched: [1:0.25] 3514 ; BROADWELL-NEXT: cld # sched: [3:1.00] 3515 ; BROADWELL-NEXT: cmc # sched: [1:0.25] 3516 ; BROADWELL-NEXT: #NO_APP 3517 ; BROADWELL-NEXT: retq # sched: [7:1.00] 3518 ; 3519 ; SKYLAKE-LABEL: test_clc_cld_cmc: 3520 ; SKYLAKE: # %bb.0: 3521 ; SKYLAKE-NEXT: #APP 3522 ; SKYLAKE-NEXT: clc # sched: [1:0.17] 3523 ; SKYLAKE-NEXT: cld # sched: [3:1.00] 3524 ; SKYLAKE-NEXT: cmc # sched: [1:0.25] 3525 ; SKYLAKE-NEXT: #NO_APP 3526 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 3527 ; 3528 ; SKX-LABEL: test_clc_cld_cmc: 3529 ; SKX: # %bb.0: 3530 ; SKX-NEXT: #APP 3531 ; SKX-NEXT: clc # sched: [1:0.17] 3532 ; SKX-NEXT: cld # sched: [3:1.00] 3533 ; SKX-NEXT: cmc # sched: [1:0.25] 3534 ; SKX-NEXT: #NO_APP 3535 ; SKX-NEXT: retq # sched: [7:1.00] 3536 ; 3537 ; BTVER2-LABEL: test_clc_cld_cmc: 3538 ; BTVER2: # %bb.0: 3539 ; BTVER2-NEXT: #APP 3540 ; BTVER2-NEXT: clc # sched: [1:0.50] 3541 ; BTVER2-NEXT: cld # sched: [1:0.50] 3542 ; BTVER2-NEXT: cmc # sched: [1:0.50] 3543 ; BTVER2-NEXT: #NO_APP 3544 ; BTVER2-NEXT: retq # sched: [4:1.00] 3545 ; 3546 ; ZNVER1-LABEL: test_clc_cld_cmc: 3547 ; ZNVER1: # %bb.0: 3548 ; ZNVER1-NEXT: #APP 3549 ; ZNVER1-NEXT: clc # sched: [1:0.25] 3550 ; ZNVER1-NEXT: cld # sched: [1:0.25] 3551 ; ZNVER1-NEXT: cmc # sched: [1:0.25] 3552 ; ZNVER1-NEXT: #NO_APP 3553 ; ZNVER1-NEXT: retq # sched: [1:0.50] 3554 tail call void asm "clc \0A\09 cld \0A\09 cmc", ""() nounwind 3555 ret void 3556 } 3557 3558 define void @test_cmp_8(i8 %a0, i8* %a1) optsize { 3559 ; GENERIC-LABEL: test_cmp_8: 3560 ; GENERIC: # %bb.0: 3561 ; GENERIC-NEXT: #APP 3562 ; GENERIC-NEXT: cmpb $7, %al # sched: [1:0.33] 3563 ; GENERIC-NEXT: cmpb $7, %dil # sched: [1:0.33] 3564 ; GENERIC-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3565 ; GENERIC-NEXT: cmpb %dil, %dil # sched: [1:0.33] 3566 ; GENERIC-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3567 ; GENERIC-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3568 ; GENERIC-NEXT: #NO_APP 3569 ; GENERIC-NEXT: retq # sched: [1:1.00] 3570 ; 3571 ; ATOM-LABEL: test_cmp_8: 3572 ; ATOM: # %bb.0: 3573 ; ATOM-NEXT: #APP 3574 ; ATOM-NEXT: cmpb $7, %al # sched: [1:0.50] 3575 ; ATOM-NEXT: cmpb $7, %dil # sched: [1:0.50] 3576 ; ATOM-NEXT: cmpb $7, (%rsi) # sched: [1:1.00] 3577 ; ATOM-NEXT: cmpb %dil, %dil # sched: [1:0.50] 3578 ; ATOM-NEXT: cmpb %dil, (%rsi) # sched: [1:1.00] 3579 ; ATOM-NEXT: cmpb (%rsi), %dil # sched: [1:1.00] 3580 ; ATOM-NEXT: #NO_APP 3581 ; ATOM-NEXT: retq # sched: [79:39.50] 3582 ; 3583 ; SLM-LABEL: test_cmp_8: 3584 ; SLM: # %bb.0: 3585 ; SLM-NEXT: #APP 3586 ; SLM-NEXT: cmpb $7, %al # sched: [1:0.50] 3587 ; SLM-NEXT: cmpb $7, %dil # sched: [1:0.50] 3588 ; SLM-NEXT: cmpb $7, (%rsi) # sched: [4:1.00] 3589 ; SLM-NEXT: cmpb %dil, %dil # sched: [1:0.50] 3590 ; SLM-NEXT: cmpb %dil, (%rsi) # sched: [4:1.00] 3591 ; SLM-NEXT: cmpb (%rsi), %dil # sched: [4:1.00] 3592 ; SLM-NEXT: #NO_APP 3593 ; SLM-NEXT: retq # sched: [4:1.00] 3594 ; 3595 ; SANDY-LABEL: test_cmp_8: 3596 ; SANDY: # %bb.0: 3597 ; SANDY-NEXT: #APP 3598 ; SANDY-NEXT: cmpb $7, %al # sched: [1:0.33] 3599 ; SANDY-NEXT: cmpb $7, %dil # sched: [1:0.33] 3600 ; SANDY-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3601 ; SANDY-NEXT: cmpb %dil, %dil # sched: [1:0.33] 3602 ; SANDY-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3603 ; SANDY-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3604 ; SANDY-NEXT: #NO_APP 3605 ; SANDY-NEXT: retq # sched: [1:1.00] 3606 ; 3607 ; HASWELL-LABEL: test_cmp_8: 3608 ; HASWELL: # %bb.0: 3609 ; HASWELL-NEXT: #APP 3610 ; HASWELL-NEXT: cmpb $7, %al # sched: [1:0.25] 3611 ; HASWELL-NEXT: cmpb $7, %dil # sched: [1:0.25] 3612 ; HASWELL-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3613 ; HASWELL-NEXT: cmpb %dil, %dil # sched: [1:0.25] 3614 ; HASWELL-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3615 ; HASWELL-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3616 ; HASWELL-NEXT: #NO_APP 3617 ; HASWELL-NEXT: retq # sched: [7:1.00] 3618 ; 3619 ; BROADWELL-LABEL: test_cmp_8: 3620 ; BROADWELL: # %bb.0: 3621 ; BROADWELL-NEXT: #APP 3622 ; BROADWELL-NEXT: cmpb $7, %al # sched: [1:0.25] 3623 ; BROADWELL-NEXT: cmpb $7, %dil # sched: [1:0.25] 3624 ; BROADWELL-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3625 ; BROADWELL-NEXT: cmpb %dil, %dil # sched: [1:0.25] 3626 ; BROADWELL-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3627 ; BROADWELL-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3628 ; BROADWELL-NEXT: #NO_APP 3629 ; BROADWELL-NEXT: retq # sched: [7:1.00] 3630 ; 3631 ; SKYLAKE-LABEL: test_cmp_8: 3632 ; SKYLAKE: # %bb.0: 3633 ; SKYLAKE-NEXT: #APP 3634 ; SKYLAKE-NEXT: cmpb $7, %al # sched: [1:0.25] 3635 ; SKYLAKE-NEXT: cmpb $7, %dil # sched: [1:0.25] 3636 ; SKYLAKE-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3637 ; SKYLAKE-NEXT: cmpb %dil, %dil # sched: [1:0.25] 3638 ; SKYLAKE-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3639 ; SKYLAKE-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3640 ; SKYLAKE-NEXT: #NO_APP 3641 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 3642 ; 3643 ; SKX-LABEL: test_cmp_8: 3644 ; SKX: # %bb.0: 3645 ; SKX-NEXT: #APP 3646 ; SKX-NEXT: cmpb $7, %al # sched: [1:0.25] 3647 ; SKX-NEXT: cmpb $7, %dil # sched: [1:0.25] 3648 ; SKX-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3649 ; SKX-NEXT: cmpb %dil, %dil # sched: [1:0.25] 3650 ; SKX-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3651 ; SKX-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3652 ; SKX-NEXT: #NO_APP 3653 ; SKX-NEXT: retq # sched: [7:1.00] 3654 ; 3655 ; BTVER2-LABEL: test_cmp_8: 3656 ; BTVER2: # %bb.0: 3657 ; BTVER2-NEXT: #APP 3658 ; BTVER2-NEXT: cmpb $7, %al # sched: [1:0.50] 3659 ; BTVER2-NEXT: cmpb $7, %dil # sched: [1:0.50] 3660 ; BTVER2-NEXT: cmpb $7, (%rsi) # sched: [4:1.00] 3661 ; BTVER2-NEXT: cmpb %dil, %dil # sched: [1:0.50] 3662 ; BTVER2-NEXT: cmpb %dil, (%rsi) # sched: [4:1.00] 3663 ; BTVER2-NEXT: cmpb (%rsi), %dil # sched: [4:1.00] 3664 ; BTVER2-NEXT: #NO_APP 3665 ; BTVER2-NEXT: retq # sched: [4:1.00] 3666 ; 3667 ; ZNVER1-LABEL: test_cmp_8: 3668 ; ZNVER1: # %bb.0: 3669 ; ZNVER1-NEXT: #APP 3670 ; ZNVER1-NEXT: cmpb $7, %al # sched: [1:0.25] 3671 ; ZNVER1-NEXT: cmpb $7, %dil # sched: [1:0.25] 3672 ; ZNVER1-NEXT: cmpb $7, (%rsi) # sched: [5:0.50] 3673 ; ZNVER1-NEXT: cmpb %dil, %dil # sched: [1:0.25] 3674 ; ZNVER1-NEXT: cmpb %dil, (%rsi) # sched: [5:0.50] 3675 ; ZNVER1-NEXT: cmpb (%rsi), %dil # sched: [5:0.50] 3676 ; ZNVER1-NEXT: #NO_APP 3677 ; ZNVER1-NEXT: retq # sched: [1:0.50] 3678 tail call void asm "cmpb $2, %AL \0A\09 cmpb $2, $0 \0A\09 cmpb $2, $1 \0A\09 cmpb $0, $0 \0A\09 cmpb $0, $1 \0A\09 cmpb $1, $0", "r,*m,i"(i8 %a0, i8* %a1, i8 7) nounwind 3679 ret void 3680 } 3681 define void @test_cmp_16(i16 %a0, i16* %a1) optsize { 3682 ; GENERIC-LABEL: test_cmp_16: 3683 ; GENERIC: # %bb.0: 3684 ; GENERIC-NEXT: #APP 3685 ; GENERIC-NEXT: cmpw $511, %ax # imm = 0x1FF 3686 ; GENERIC-NEXT: # sched: [1:0.33] 3687 ; GENERIC-NEXT: cmpw $511, %di # imm = 0x1FF 3688 ; GENERIC-NEXT: # sched: [1:0.33] 3689 ; GENERIC-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3690 ; GENERIC-NEXT: # sched: [6:0.50] 3691 ; GENERIC-NEXT: cmpw $7, %di # sched: [1:0.33] 3692 ; GENERIC-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3693 ; GENERIC-NEXT: cmpw %di, %di # sched: [1:0.33] 3694 ; GENERIC-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3695 ; GENERIC-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3696 ; GENERIC-NEXT: #NO_APP 3697 ; GENERIC-NEXT: retq # sched: [1:1.00] 3698 ; 3699 ; ATOM-LABEL: test_cmp_16: 3700 ; ATOM: # %bb.0: 3701 ; ATOM-NEXT: #APP 3702 ; ATOM-NEXT: cmpw $511, %ax # imm = 0x1FF 3703 ; ATOM-NEXT: # sched: [1:0.50] 3704 ; ATOM-NEXT: cmpw $511, %di # imm = 0x1FF 3705 ; ATOM-NEXT: # sched: [1:0.50] 3706 ; ATOM-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3707 ; ATOM-NEXT: # sched: [1:1.00] 3708 ; ATOM-NEXT: cmpw $7, %di # sched: [1:0.50] 3709 ; ATOM-NEXT: cmpw $7, (%rsi) # sched: [1:1.00] 3710 ; ATOM-NEXT: cmpw %di, %di # sched: [1:0.50] 3711 ; ATOM-NEXT: cmpw %di, (%rsi) # sched: [1:1.00] 3712 ; ATOM-NEXT: cmpw (%rsi), %di # sched: [1:1.00] 3713 ; ATOM-NEXT: #NO_APP 3714 ; ATOM-NEXT: retq # sched: [79:39.50] 3715 ; 3716 ; SLM-LABEL: test_cmp_16: 3717 ; SLM: # %bb.0: 3718 ; SLM-NEXT: #APP 3719 ; SLM-NEXT: cmpw $511, %ax # imm = 0x1FF 3720 ; SLM-NEXT: # sched: [1:0.50] 3721 ; SLM-NEXT: cmpw $511, %di # imm = 0x1FF 3722 ; SLM-NEXT: # sched: [1:0.50] 3723 ; SLM-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3724 ; SLM-NEXT: # sched: [4:1.00] 3725 ; SLM-NEXT: cmpw $7, %di # sched: [1:0.50] 3726 ; SLM-NEXT: cmpw $7, (%rsi) # sched: [4:1.00] 3727 ; SLM-NEXT: cmpw %di, %di # sched: [1:0.50] 3728 ; SLM-NEXT: cmpw %di, (%rsi) # sched: [4:1.00] 3729 ; SLM-NEXT: cmpw (%rsi), %di # sched: [4:1.00] 3730 ; SLM-NEXT: #NO_APP 3731 ; SLM-NEXT: retq # sched: [4:1.00] 3732 ; 3733 ; SANDY-LABEL: test_cmp_16: 3734 ; SANDY: # %bb.0: 3735 ; SANDY-NEXT: #APP 3736 ; SANDY-NEXT: cmpw $511, %ax # imm = 0x1FF 3737 ; SANDY-NEXT: # sched: [1:0.33] 3738 ; SANDY-NEXT: cmpw $511, %di # imm = 0x1FF 3739 ; SANDY-NEXT: # sched: [1:0.33] 3740 ; SANDY-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3741 ; SANDY-NEXT: # sched: [6:0.50] 3742 ; SANDY-NEXT: cmpw $7, %di # sched: [1:0.33] 3743 ; SANDY-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3744 ; SANDY-NEXT: cmpw %di, %di # sched: [1:0.33] 3745 ; SANDY-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3746 ; SANDY-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3747 ; SANDY-NEXT: #NO_APP 3748 ; SANDY-NEXT: retq # sched: [1:1.00] 3749 ; 3750 ; HASWELL-LABEL: test_cmp_16: 3751 ; HASWELL: # %bb.0: 3752 ; HASWELL-NEXT: #APP 3753 ; HASWELL-NEXT: cmpw $511, %ax # imm = 0x1FF 3754 ; HASWELL-NEXT: # sched: [1:0.25] 3755 ; HASWELL-NEXT: cmpw $511, %di # imm = 0x1FF 3756 ; HASWELL-NEXT: # sched: [1:0.25] 3757 ; HASWELL-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3758 ; HASWELL-NEXT: # sched: [6:0.50] 3759 ; HASWELL-NEXT: cmpw $7, %di # sched: [1:0.25] 3760 ; HASWELL-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3761 ; HASWELL-NEXT: cmpw %di, %di # sched: [1:0.25] 3762 ; HASWELL-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3763 ; HASWELL-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3764 ; HASWELL-NEXT: #NO_APP 3765 ; HASWELL-NEXT: retq # sched: [7:1.00] 3766 ; 3767 ; BROADWELL-LABEL: test_cmp_16: 3768 ; BROADWELL: # %bb.0: 3769 ; BROADWELL-NEXT: #APP 3770 ; BROADWELL-NEXT: cmpw $511, %ax # imm = 0x1FF 3771 ; BROADWELL-NEXT: # sched: [1:0.25] 3772 ; BROADWELL-NEXT: cmpw $511, %di # imm = 0x1FF 3773 ; BROADWELL-NEXT: # sched: [1:0.25] 3774 ; BROADWELL-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3775 ; BROADWELL-NEXT: # sched: [6:0.50] 3776 ; BROADWELL-NEXT: cmpw $7, %di # sched: [1:0.25] 3777 ; BROADWELL-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3778 ; BROADWELL-NEXT: cmpw %di, %di # sched: [1:0.25] 3779 ; BROADWELL-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3780 ; BROADWELL-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3781 ; BROADWELL-NEXT: #NO_APP 3782 ; BROADWELL-NEXT: retq # sched: [7:1.00] 3783 ; 3784 ; SKYLAKE-LABEL: test_cmp_16: 3785 ; SKYLAKE: # %bb.0: 3786 ; SKYLAKE-NEXT: #APP 3787 ; SKYLAKE-NEXT: cmpw $511, %ax # imm = 0x1FF 3788 ; SKYLAKE-NEXT: # sched: [1:0.25] 3789 ; SKYLAKE-NEXT: cmpw $511, %di # imm = 0x1FF 3790 ; SKYLAKE-NEXT: # sched: [1:0.25] 3791 ; SKYLAKE-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3792 ; SKYLAKE-NEXT: # sched: [6:0.50] 3793 ; SKYLAKE-NEXT: cmpw $7, %di # sched: [1:0.25] 3794 ; SKYLAKE-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3795 ; SKYLAKE-NEXT: cmpw %di, %di # sched: [1:0.25] 3796 ; SKYLAKE-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3797 ; SKYLAKE-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3798 ; SKYLAKE-NEXT: #NO_APP 3799 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 3800 ; 3801 ; SKX-LABEL: test_cmp_16: 3802 ; SKX: # %bb.0: 3803 ; SKX-NEXT: #APP 3804 ; SKX-NEXT: cmpw $511, %ax # imm = 0x1FF 3805 ; SKX-NEXT: # sched: [1:0.25] 3806 ; SKX-NEXT: cmpw $511, %di # imm = 0x1FF 3807 ; SKX-NEXT: # sched: [1:0.25] 3808 ; SKX-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3809 ; SKX-NEXT: # sched: [6:0.50] 3810 ; SKX-NEXT: cmpw $7, %di # sched: [1:0.25] 3811 ; SKX-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3812 ; SKX-NEXT: cmpw %di, %di # sched: [1:0.25] 3813 ; SKX-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3814 ; SKX-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3815 ; SKX-NEXT: #NO_APP 3816 ; SKX-NEXT: retq # sched: [7:1.00] 3817 ; 3818 ; BTVER2-LABEL: test_cmp_16: 3819 ; BTVER2: # %bb.0: 3820 ; BTVER2-NEXT: #APP 3821 ; BTVER2-NEXT: cmpw $511, %ax # imm = 0x1FF 3822 ; BTVER2-NEXT: # sched: [1:0.50] 3823 ; BTVER2-NEXT: cmpw $511, %di # imm = 0x1FF 3824 ; BTVER2-NEXT: # sched: [1:0.50] 3825 ; BTVER2-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3826 ; BTVER2-NEXT: # sched: [4:1.00] 3827 ; BTVER2-NEXT: cmpw $7, %di # sched: [1:0.50] 3828 ; BTVER2-NEXT: cmpw $7, (%rsi) # sched: [4:1.00] 3829 ; BTVER2-NEXT: cmpw %di, %di # sched: [1:0.50] 3830 ; BTVER2-NEXT: cmpw %di, (%rsi) # sched: [4:1.00] 3831 ; BTVER2-NEXT: cmpw (%rsi), %di # sched: [4:1.00] 3832 ; BTVER2-NEXT: #NO_APP 3833 ; BTVER2-NEXT: retq # sched: [4:1.00] 3834 ; 3835 ; ZNVER1-LABEL: test_cmp_16: 3836 ; ZNVER1: # %bb.0: 3837 ; ZNVER1-NEXT: #APP 3838 ; ZNVER1-NEXT: cmpw $511, %ax # imm = 0x1FF 3839 ; ZNVER1-NEXT: # sched: [1:0.25] 3840 ; ZNVER1-NEXT: cmpw $511, %di # imm = 0x1FF 3841 ; ZNVER1-NEXT: # sched: [1:0.25] 3842 ; ZNVER1-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3843 ; ZNVER1-NEXT: # sched: [5:0.50] 3844 ; ZNVER1-NEXT: cmpw $7, %di # sched: [1:0.25] 3845 ; ZNVER1-NEXT: cmpw $7, (%rsi) # sched: [5:0.50] 3846 ; ZNVER1-NEXT: cmpw %di, %di # sched: [1:0.25] 3847 ; ZNVER1-NEXT: cmpw %di, (%rsi) # sched: [5:0.50] 3848 ; ZNVER1-NEXT: cmpw (%rsi), %di # sched: [5:0.50] 3849 ; ZNVER1-NEXT: #NO_APP 3850 ; ZNVER1-NEXT: retq # sched: [1:0.50] 3851 tail call void asm "cmpw $2, %AX \0A\09 cmpw $2, $0 \0A\09 cmpw $2, $1 \0A\09 cmpw $3, $0 \0A\09 cmpw $3, $1 \0A\09 cmpw $0, $0 \0A\09 cmpw $0, $1 \0A\09 cmpw $1, $0", "r,*m,i,i"(i16 %a0, i16* %a1, i16 511, i8 7) nounwind 3852 ret void 3853 } 3854 define void @test_cmp_32(i32 %a0, i32* %a1) optsize { 3855 ; GENERIC-LABEL: test_cmp_32: 3856 ; GENERIC: # %bb.0: 3857 ; GENERIC-NEXT: #APP 3858 ; GENERIC-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3859 ; GENERIC-NEXT: # sched: [1:0.33] 3860 ; GENERIC-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3861 ; GENERIC-NEXT: # sched: [1:0.33] 3862 ; GENERIC-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3863 ; GENERIC-NEXT: # sched: [6:0.50] 3864 ; GENERIC-NEXT: cmpl $7, %edi # sched: [1:0.33] 3865 ; GENERIC-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3866 ; GENERIC-NEXT: cmpl %edi, %edi # sched: [1:0.33] 3867 ; GENERIC-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3868 ; GENERIC-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3869 ; GENERIC-NEXT: #NO_APP 3870 ; GENERIC-NEXT: retq # sched: [1:1.00] 3871 ; 3872 ; ATOM-LABEL: test_cmp_32: 3873 ; ATOM: # %bb.0: 3874 ; ATOM-NEXT: #APP 3875 ; ATOM-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3876 ; ATOM-NEXT: # sched: [1:0.50] 3877 ; ATOM-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3878 ; ATOM-NEXT: # sched: [1:0.50] 3879 ; ATOM-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3880 ; ATOM-NEXT: # sched: [1:1.00] 3881 ; ATOM-NEXT: cmpl $7, %edi # sched: [1:0.50] 3882 ; ATOM-NEXT: cmpl $7, (%rsi) # sched: [1:1.00] 3883 ; ATOM-NEXT: cmpl %edi, %edi # sched: [1:0.50] 3884 ; ATOM-NEXT: cmpl %edi, (%rsi) # sched: [1:1.00] 3885 ; ATOM-NEXT: cmpl (%rsi), %edi # sched: [1:1.00] 3886 ; ATOM-NEXT: #NO_APP 3887 ; ATOM-NEXT: retq # sched: [79:39.50] 3888 ; 3889 ; SLM-LABEL: test_cmp_32: 3890 ; SLM: # %bb.0: 3891 ; SLM-NEXT: #APP 3892 ; SLM-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3893 ; SLM-NEXT: # sched: [1:0.50] 3894 ; SLM-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3895 ; SLM-NEXT: # sched: [1:0.50] 3896 ; SLM-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3897 ; SLM-NEXT: # sched: [4:1.00] 3898 ; SLM-NEXT: cmpl $7, %edi # sched: [1:0.50] 3899 ; SLM-NEXT: cmpl $7, (%rsi) # sched: [4:1.00] 3900 ; SLM-NEXT: cmpl %edi, %edi # sched: [1:0.50] 3901 ; SLM-NEXT: cmpl %edi, (%rsi) # sched: [4:1.00] 3902 ; SLM-NEXT: cmpl (%rsi), %edi # sched: [4:1.00] 3903 ; SLM-NEXT: #NO_APP 3904 ; SLM-NEXT: retq # sched: [4:1.00] 3905 ; 3906 ; SANDY-LABEL: test_cmp_32: 3907 ; SANDY: # %bb.0: 3908 ; SANDY-NEXT: #APP 3909 ; SANDY-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3910 ; SANDY-NEXT: # sched: [1:0.33] 3911 ; SANDY-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3912 ; SANDY-NEXT: # sched: [1:0.33] 3913 ; SANDY-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3914 ; SANDY-NEXT: # sched: [6:0.50] 3915 ; SANDY-NEXT: cmpl $7, %edi # sched: [1:0.33] 3916 ; SANDY-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3917 ; SANDY-NEXT: cmpl %edi, %edi # sched: [1:0.33] 3918 ; SANDY-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3919 ; SANDY-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3920 ; SANDY-NEXT: #NO_APP 3921 ; SANDY-NEXT: retq # sched: [1:1.00] 3922 ; 3923 ; HASWELL-LABEL: test_cmp_32: 3924 ; HASWELL: # %bb.0: 3925 ; HASWELL-NEXT: #APP 3926 ; HASWELL-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3927 ; HASWELL-NEXT: # sched: [1:0.25] 3928 ; HASWELL-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3929 ; HASWELL-NEXT: # sched: [1:0.25] 3930 ; HASWELL-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3931 ; HASWELL-NEXT: # sched: [6:0.50] 3932 ; HASWELL-NEXT: cmpl $7, %edi # sched: [1:0.25] 3933 ; HASWELL-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3934 ; HASWELL-NEXT: cmpl %edi, %edi # sched: [1:0.25] 3935 ; HASWELL-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3936 ; HASWELL-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3937 ; HASWELL-NEXT: #NO_APP 3938 ; HASWELL-NEXT: retq # sched: [7:1.00] 3939 ; 3940 ; BROADWELL-LABEL: test_cmp_32: 3941 ; BROADWELL: # %bb.0: 3942 ; BROADWELL-NEXT: #APP 3943 ; BROADWELL-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3944 ; BROADWELL-NEXT: # sched: [1:0.25] 3945 ; BROADWELL-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3946 ; BROADWELL-NEXT: # sched: [1:0.25] 3947 ; BROADWELL-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3948 ; BROADWELL-NEXT: # sched: [6:0.50] 3949 ; BROADWELL-NEXT: cmpl $7, %edi # sched: [1:0.25] 3950 ; BROADWELL-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3951 ; BROADWELL-NEXT: cmpl %edi, %edi # sched: [1:0.25] 3952 ; BROADWELL-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3953 ; BROADWELL-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3954 ; BROADWELL-NEXT: #NO_APP 3955 ; BROADWELL-NEXT: retq # sched: [7:1.00] 3956 ; 3957 ; SKYLAKE-LABEL: test_cmp_32: 3958 ; SKYLAKE: # %bb.0: 3959 ; SKYLAKE-NEXT: #APP 3960 ; SKYLAKE-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3961 ; SKYLAKE-NEXT: # sched: [1:0.25] 3962 ; SKYLAKE-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3963 ; SKYLAKE-NEXT: # sched: [1:0.25] 3964 ; SKYLAKE-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3965 ; SKYLAKE-NEXT: # sched: [6:0.50] 3966 ; SKYLAKE-NEXT: cmpl $7, %edi # sched: [1:0.25] 3967 ; SKYLAKE-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3968 ; SKYLAKE-NEXT: cmpl %edi, %edi # sched: [1:0.25] 3969 ; SKYLAKE-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3970 ; SKYLAKE-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3971 ; SKYLAKE-NEXT: #NO_APP 3972 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 3973 ; 3974 ; SKX-LABEL: test_cmp_32: 3975 ; SKX: # %bb.0: 3976 ; SKX-NEXT: #APP 3977 ; SKX-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3978 ; SKX-NEXT: # sched: [1:0.25] 3979 ; SKX-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3980 ; SKX-NEXT: # sched: [1:0.25] 3981 ; SKX-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3982 ; SKX-NEXT: # sched: [6:0.50] 3983 ; SKX-NEXT: cmpl $7, %edi # sched: [1:0.25] 3984 ; SKX-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3985 ; SKX-NEXT: cmpl %edi, %edi # sched: [1:0.25] 3986 ; SKX-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3987 ; SKX-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3988 ; SKX-NEXT: #NO_APP 3989 ; SKX-NEXT: retq # sched: [7:1.00] 3990 ; 3991 ; BTVER2-LABEL: test_cmp_32: 3992 ; BTVER2: # %bb.0: 3993 ; BTVER2-NEXT: #APP 3994 ; BTVER2-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3995 ; BTVER2-NEXT: # sched: [1:0.50] 3996 ; BTVER2-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3997 ; BTVER2-NEXT: # sched: [1:0.50] 3998 ; BTVER2-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3999 ; BTVER2-NEXT: # sched: [4:1.00] 4000 ; BTVER2-NEXT: cmpl $7, %edi # sched: [1:0.50] 4001 ; BTVER2-NEXT: cmpl $7, (%rsi) # sched: [4:1.00] 4002 ; BTVER2-NEXT: cmpl %edi, %edi # sched: [1:0.50] 4003 ; BTVER2-NEXT: cmpl %edi, (%rsi) # sched: [4:1.00] 4004 ; BTVER2-NEXT: cmpl (%rsi), %edi # sched: [4:1.00] 4005 ; BTVER2-NEXT: #NO_APP 4006 ; BTVER2-NEXT: retq # sched: [4:1.00] 4007 ; 4008 ; ZNVER1-LABEL: test_cmp_32: 4009 ; ZNVER1: # %bb.0: 4010 ; ZNVER1-NEXT: #APP 4011 ; ZNVER1-NEXT: cmpl $665536, %eax # imm = 0xA27C0 4012 ; ZNVER1-NEXT: # sched: [1:0.25] 4013 ; ZNVER1-NEXT: cmpl $665536, %edi # imm = 0xA27C0 4014 ; ZNVER1-NEXT: # sched: [1:0.25] 4015 ; ZNVER1-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 4016 ; ZNVER1-NEXT: # sched: [5:0.50] 4017 ; ZNVER1-NEXT: cmpl $7, %edi # sched: [1:0.25] 4018 ; ZNVER1-NEXT: cmpl $7, (%rsi) # sched: [5:0.50] 4019 ; ZNVER1-NEXT: cmpl %edi, %edi # sched: [1:0.25] 4020 ; ZNVER1-NEXT: cmpl %edi, (%rsi) # sched: [5:0.50] 4021 ; ZNVER1-NEXT: cmpl (%rsi), %edi # sched: [5:0.50] 4022 ; ZNVER1-NEXT: #NO_APP 4023 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4024 tail call void asm "cmpl $2, %EAX \0A\09 cmpl $2, $0 \0A\09 cmpl $2, $1 \0A\09 cmpl $3, $0 \0A\09 cmpl $3, $1 \0A\09 cmpl $0, $0 \0A\09 cmpl $0, $1 \0A\09 cmpl $1, $0", "r,*m,i,i"(i32 %a0, i32* %a1, i32 665536, i8 7) nounwind 4025 ret void 4026 } 4027 define void @test_cmp_64(i64 %a0, i64* %a1) optsize { 4028 ; GENERIC-LABEL: test_cmp_64: 4029 ; GENERIC: # %bb.0: 4030 ; GENERIC-NEXT: #APP 4031 ; GENERIC-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4032 ; GENERIC-NEXT: # sched: [1:0.33] 4033 ; GENERIC-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4034 ; GENERIC-NEXT: # sched: [1:0.33] 4035 ; GENERIC-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4036 ; GENERIC-NEXT: # sched: [6:0.50] 4037 ; GENERIC-NEXT: cmpq $7, %rdi # sched: [1:0.33] 4038 ; GENERIC-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4039 ; GENERIC-NEXT: cmpq %rdi, %rdi # sched: [1:0.33] 4040 ; GENERIC-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4041 ; GENERIC-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4042 ; GENERIC-NEXT: #NO_APP 4043 ; GENERIC-NEXT: retq # sched: [1:1.00] 4044 ; 4045 ; ATOM-LABEL: test_cmp_64: 4046 ; ATOM: # %bb.0: 4047 ; ATOM-NEXT: #APP 4048 ; ATOM-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4049 ; ATOM-NEXT: # sched: [1:0.50] 4050 ; ATOM-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4051 ; ATOM-NEXT: # sched: [1:0.50] 4052 ; ATOM-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4053 ; ATOM-NEXT: # sched: [1:1.00] 4054 ; ATOM-NEXT: cmpq $7, %rdi # sched: [1:0.50] 4055 ; ATOM-NEXT: cmpq $7, (%rsi) # sched: [1:1.00] 4056 ; ATOM-NEXT: cmpq %rdi, %rdi # sched: [1:0.50] 4057 ; ATOM-NEXT: cmpq %rdi, (%rsi) # sched: [1:1.00] 4058 ; ATOM-NEXT: cmpq (%rsi), %rdi # sched: [1:1.00] 4059 ; ATOM-NEXT: #NO_APP 4060 ; ATOM-NEXT: retq # sched: [79:39.50] 4061 ; 4062 ; SLM-LABEL: test_cmp_64: 4063 ; SLM: # %bb.0: 4064 ; SLM-NEXT: #APP 4065 ; SLM-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4066 ; SLM-NEXT: # sched: [1:0.50] 4067 ; SLM-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4068 ; SLM-NEXT: # sched: [1:0.50] 4069 ; SLM-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4070 ; SLM-NEXT: # sched: [4:1.00] 4071 ; SLM-NEXT: cmpq $7, %rdi # sched: [1:0.50] 4072 ; SLM-NEXT: cmpq $7, (%rsi) # sched: [4:1.00] 4073 ; SLM-NEXT: cmpq %rdi, %rdi # sched: [1:0.50] 4074 ; SLM-NEXT: cmpq %rdi, (%rsi) # sched: [4:1.00] 4075 ; SLM-NEXT: cmpq (%rsi), %rdi # sched: [4:1.00] 4076 ; SLM-NEXT: #NO_APP 4077 ; SLM-NEXT: retq # sched: [4:1.00] 4078 ; 4079 ; SANDY-LABEL: test_cmp_64: 4080 ; SANDY: # %bb.0: 4081 ; SANDY-NEXT: #APP 4082 ; SANDY-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4083 ; SANDY-NEXT: # sched: [1:0.33] 4084 ; SANDY-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4085 ; SANDY-NEXT: # sched: [1:0.33] 4086 ; SANDY-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4087 ; SANDY-NEXT: # sched: [6:0.50] 4088 ; SANDY-NEXT: cmpq $7, %rdi # sched: [1:0.33] 4089 ; SANDY-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4090 ; SANDY-NEXT: cmpq %rdi, %rdi # sched: [1:0.33] 4091 ; SANDY-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4092 ; SANDY-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4093 ; SANDY-NEXT: #NO_APP 4094 ; SANDY-NEXT: retq # sched: [1:1.00] 4095 ; 4096 ; HASWELL-LABEL: test_cmp_64: 4097 ; HASWELL: # %bb.0: 4098 ; HASWELL-NEXT: #APP 4099 ; HASWELL-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4100 ; HASWELL-NEXT: # sched: [1:0.25] 4101 ; HASWELL-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4102 ; HASWELL-NEXT: # sched: [1:0.25] 4103 ; HASWELL-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4104 ; HASWELL-NEXT: # sched: [6:0.50] 4105 ; HASWELL-NEXT: cmpq $7, %rdi # sched: [1:0.25] 4106 ; HASWELL-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4107 ; HASWELL-NEXT: cmpq %rdi, %rdi # sched: [1:0.25] 4108 ; HASWELL-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4109 ; HASWELL-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4110 ; HASWELL-NEXT: #NO_APP 4111 ; HASWELL-NEXT: retq # sched: [7:1.00] 4112 ; 4113 ; BROADWELL-LABEL: test_cmp_64: 4114 ; BROADWELL: # %bb.0: 4115 ; BROADWELL-NEXT: #APP 4116 ; BROADWELL-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4117 ; BROADWELL-NEXT: # sched: [1:0.25] 4118 ; BROADWELL-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4119 ; BROADWELL-NEXT: # sched: [1:0.25] 4120 ; BROADWELL-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4121 ; BROADWELL-NEXT: # sched: [6:0.50] 4122 ; BROADWELL-NEXT: cmpq $7, %rdi # sched: [1:0.25] 4123 ; BROADWELL-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4124 ; BROADWELL-NEXT: cmpq %rdi, %rdi # sched: [1:0.25] 4125 ; BROADWELL-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4126 ; BROADWELL-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4127 ; BROADWELL-NEXT: #NO_APP 4128 ; BROADWELL-NEXT: retq # sched: [7:1.00] 4129 ; 4130 ; SKYLAKE-LABEL: test_cmp_64: 4131 ; SKYLAKE: # %bb.0: 4132 ; SKYLAKE-NEXT: #APP 4133 ; SKYLAKE-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4134 ; SKYLAKE-NEXT: # sched: [1:0.25] 4135 ; SKYLAKE-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4136 ; SKYLAKE-NEXT: # sched: [1:0.25] 4137 ; SKYLAKE-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4138 ; SKYLAKE-NEXT: # sched: [6:0.50] 4139 ; SKYLAKE-NEXT: cmpq $7, %rdi # sched: [1:0.25] 4140 ; SKYLAKE-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4141 ; SKYLAKE-NEXT: cmpq %rdi, %rdi # sched: [1:0.25] 4142 ; SKYLAKE-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4143 ; SKYLAKE-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4144 ; SKYLAKE-NEXT: #NO_APP 4145 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 4146 ; 4147 ; SKX-LABEL: test_cmp_64: 4148 ; SKX: # %bb.0: 4149 ; SKX-NEXT: #APP 4150 ; SKX-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4151 ; SKX-NEXT: # sched: [1:0.25] 4152 ; SKX-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4153 ; SKX-NEXT: # sched: [1:0.25] 4154 ; SKX-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4155 ; SKX-NEXT: # sched: [6:0.50] 4156 ; SKX-NEXT: cmpq $7, %rdi # sched: [1:0.25] 4157 ; SKX-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4158 ; SKX-NEXT: cmpq %rdi, %rdi # sched: [1:0.25] 4159 ; SKX-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4160 ; SKX-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4161 ; SKX-NEXT: #NO_APP 4162 ; SKX-NEXT: retq # sched: [7:1.00] 4163 ; 4164 ; BTVER2-LABEL: test_cmp_64: 4165 ; BTVER2: # %bb.0: 4166 ; BTVER2-NEXT: #APP 4167 ; BTVER2-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4168 ; BTVER2-NEXT: # sched: [1:0.50] 4169 ; BTVER2-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4170 ; BTVER2-NEXT: # sched: [1:0.50] 4171 ; BTVER2-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4172 ; BTVER2-NEXT: # sched: [4:1.00] 4173 ; BTVER2-NEXT: cmpq $7, %rdi # sched: [1:0.50] 4174 ; BTVER2-NEXT: cmpq $7, (%rsi) # sched: [4:1.00] 4175 ; BTVER2-NEXT: cmpq %rdi, %rdi # sched: [1:0.50] 4176 ; BTVER2-NEXT: cmpq %rdi, (%rsi) # sched: [4:1.00] 4177 ; BTVER2-NEXT: cmpq (%rsi), %rdi # sched: [4:1.00] 4178 ; BTVER2-NEXT: #NO_APP 4179 ; BTVER2-NEXT: retq # sched: [4:1.00] 4180 ; 4181 ; ZNVER1-LABEL: test_cmp_64: 4182 ; ZNVER1: # %bb.0: 4183 ; ZNVER1-NEXT: #APP 4184 ; ZNVER1-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4185 ; ZNVER1-NEXT: # sched: [1:0.25] 4186 ; ZNVER1-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4187 ; ZNVER1-NEXT: # sched: [1:0.25] 4188 ; ZNVER1-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4189 ; ZNVER1-NEXT: # sched: [5:0.50] 4190 ; ZNVER1-NEXT: cmpq $7, %rdi # sched: [1:0.25] 4191 ; ZNVER1-NEXT: cmpq $7, (%rsi) # sched: [5:0.50] 4192 ; ZNVER1-NEXT: cmpq %rdi, %rdi # sched: [1:0.25] 4193 ; ZNVER1-NEXT: cmpq %rdi, (%rsi) # sched: [5:0.50] 4194 ; ZNVER1-NEXT: cmpq (%rsi), %rdi # sched: [5:0.50] 4195 ; ZNVER1-NEXT: #NO_APP 4196 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4197 tail call void asm "cmpq $2, %RAX \0A\09 cmpq $2, $0 \0A\09 cmpq $2, $1 \0A\09 cmpq $3, $0 \0A\09 cmpq $3, $1 \0A\09 cmpq $0, $0 \0A\09 cmpq $0, $1 \0A\09 cmpq $1, $0", "r,*m,i,i"(i64 %a0, i64* %a1, i32 665536, i8 7) nounwind 4198 ret void 4199 } 4200 4201 define void @test_cmps() optsize { 4202 ; GENERIC-LABEL: test_cmps: 4203 ; GENERIC: # %bb.0: 4204 ; GENERIC-NEXT: #APP 4205 ; GENERIC-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [8:1.00] 4206 ; GENERIC-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [8:1.00] 4207 ; GENERIC-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [8:1.00] 4208 ; GENERIC-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [8:1.00] 4209 ; GENERIC-NEXT: #NO_APP 4210 ; GENERIC-NEXT: retq # sched: [1:1.00] 4211 ; 4212 ; ATOM-LABEL: test_cmps: 4213 ; ATOM: # %bb.0: 4214 ; ATOM-NEXT: #APP 4215 ; ATOM-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [3:1.50] 4216 ; ATOM-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [3:1.50] 4217 ; ATOM-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [3:1.50] 4218 ; ATOM-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [3:1.50] 4219 ; ATOM-NEXT: #NO_APP 4220 ; ATOM-NEXT: retq # sched: [79:39.50] 4221 ; 4222 ; SLM-LABEL: test_cmps: 4223 ; SLM: # %bb.0: 4224 ; SLM-NEXT: #APP 4225 ; SLM-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:1.00] 4226 ; SLM-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:1.00] 4227 ; SLM-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:1.00] 4228 ; SLM-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:1.00] 4229 ; SLM-NEXT: #NO_APP 4230 ; SLM-NEXT: retq # sched: [4:1.00] 4231 ; 4232 ; SANDY-LABEL: test_cmps: 4233 ; SANDY: # %bb.0: 4234 ; SANDY-NEXT: #APP 4235 ; SANDY-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [8:1.00] 4236 ; SANDY-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [8:1.00] 4237 ; SANDY-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [8:1.00] 4238 ; SANDY-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [8:1.00] 4239 ; SANDY-NEXT: #NO_APP 4240 ; SANDY-NEXT: retq # sched: [1:1.00] 4241 ; 4242 ; HASWELL-LABEL: test_cmps: 4243 ; HASWELL: # %bb.0: 4244 ; HASWELL-NEXT: #APP 4245 ; HASWELL-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [4:1.00] 4246 ; HASWELL-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [4:1.00] 4247 ; HASWELL-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [4:1.00] 4248 ; HASWELL-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [4:1.00] 4249 ; HASWELL-NEXT: #NO_APP 4250 ; HASWELL-NEXT: retq # sched: [7:1.00] 4251 ; 4252 ; BROADWELL-LABEL: test_cmps: 4253 ; BROADWELL: # %bb.0: 4254 ; BROADWELL-NEXT: #APP 4255 ; BROADWELL-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:0.25] 4256 ; BROADWELL-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:0.25] 4257 ; BROADWELL-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:0.25] 4258 ; BROADWELL-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:0.25] 4259 ; BROADWELL-NEXT: #NO_APP 4260 ; BROADWELL-NEXT: retq # sched: [7:1.00] 4261 ; 4262 ; SKYLAKE-LABEL: test_cmps: 4263 ; SKYLAKE: # %bb.0: 4264 ; SKYLAKE-NEXT: #APP 4265 ; SKYLAKE-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:0.25] 4266 ; SKYLAKE-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:0.25] 4267 ; SKYLAKE-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:0.25] 4268 ; SKYLAKE-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:0.25] 4269 ; SKYLAKE-NEXT: #NO_APP 4270 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 4271 ; 4272 ; SKX-LABEL: test_cmps: 4273 ; SKX: # %bb.0: 4274 ; SKX-NEXT: #APP 4275 ; SKX-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:0.25] 4276 ; SKX-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:0.25] 4277 ; SKX-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:0.25] 4278 ; SKX-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:0.25] 4279 ; SKX-NEXT: #NO_APP 4280 ; SKX-NEXT: retq # sched: [7:1.00] 4281 ; 4282 ; BTVER2-LABEL: test_cmps: 4283 ; BTVER2: # %bb.0: 4284 ; BTVER2-NEXT: #APP 4285 ; BTVER2-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:0.50] 4286 ; BTVER2-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:0.50] 4287 ; BTVER2-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:0.50] 4288 ; BTVER2-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:0.50] 4289 ; BTVER2-NEXT: #NO_APP 4290 ; BTVER2-NEXT: retq # sched: [4:1.00] 4291 ; 4292 ; ZNVER1-LABEL: test_cmps: 4293 ; ZNVER1: # %bb.0: 4294 ; ZNVER1-NEXT: #APP 4295 ; ZNVER1-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:0.25] 4296 ; ZNVER1-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:0.25] 4297 ; ZNVER1-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:0.25] 4298 ; ZNVER1-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:0.25] 4299 ; ZNVER1-NEXT: #NO_APP 4300 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4301 call void asm sideeffect "cmpsb \0A\09 cmpsw \0A\09 cmpsl \0A\09 cmpsq", ""() 4302 ret void 4303 } 4304 4305 define void @test_cmpxchg_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 4306 ; GENERIC-LABEL: test_cmpxchg_8: 4307 ; GENERIC: # %bb.0: 4308 ; GENERIC-NEXT: #APP 4309 ; GENERIC-NEXT: cmpxchgb %dil, %sil # sched: [5:1.33] 4310 ; GENERIC-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:1.00] 4311 ; GENERIC-NEXT: #NO_APP 4312 ; GENERIC-NEXT: retq # sched: [1:1.00] 4313 ; 4314 ; ATOM-LABEL: test_cmpxchg_8: 4315 ; ATOM: # %bb.0: 4316 ; ATOM-NEXT: #APP 4317 ; ATOM-NEXT: cmpxchgb %dil, %sil # sched: [9:4.50] 4318 ; ATOM-NEXT: cmpxchgb %dil, (%rdx) # sched: [6:3.00] 4319 ; ATOM-NEXT: #NO_APP 4320 ; ATOM-NEXT: retq # sched: [79:39.50] 4321 ; 4322 ; SLM-LABEL: test_cmpxchg_8: 4323 ; SLM: # %bb.0: 4324 ; SLM-NEXT: #APP 4325 ; SLM-NEXT: cmpxchgb %dil, %sil # sched: [1:0.50] 4326 ; SLM-NEXT: cmpxchgb %dil, (%rdx) # sched: [4:2.00] 4327 ; SLM-NEXT: #NO_APP 4328 ; SLM-NEXT: retq # sched: [4:1.00] 4329 ; 4330 ; SANDY-LABEL: test_cmpxchg_8: 4331 ; SANDY: # %bb.0: 4332 ; SANDY-NEXT: #APP 4333 ; SANDY-NEXT: cmpxchgb %dil, %sil # sched: [5:1.33] 4334 ; SANDY-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:1.00] 4335 ; SANDY-NEXT: #NO_APP 4336 ; SANDY-NEXT: retq # sched: [1:1.00] 4337 ; 4338 ; HASWELL-LABEL: test_cmpxchg_8: 4339 ; HASWELL: # %bb.0: 4340 ; HASWELL-NEXT: #APP 4341 ; HASWELL-NEXT: cmpxchgb %dil, %sil # sched: [5:1.25] 4342 ; HASWELL-NEXT: cmpxchgb %dil, (%rdx) # sched: [9:1.00] 4343 ; HASWELL-NEXT: #NO_APP 4344 ; HASWELL-NEXT: retq # sched: [7:1.00] 4345 ; 4346 ; BROADWELL-LABEL: test_cmpxchg_8: 4347 ; BROADWELL: # %bb.0: 4348 ; BROADWELL-NEXT: #APP 4349 ; BROADWELL-NEXT: cmpxchgb %dil, %sil # sched: [5:1.25] 4350 ; BROADWELL-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:1.00] 4351 ; BROADWELL-NEXT: #NO_APP 4352 ; BROADWELL-NEXT: retq # sched: [7:1.00] 4353 ; 4354 ; SKYLAKE-LABEL: test_cmpxchg_8: 4355 ; SKYLAKE: # %bb.0: 4356 ; SKYLAKE-NEXT: #APP 4357 ; SKYLAKE-NEXT: cmpxchgb %dil, %sil # sched: [5:1.25] 4358 ; SKYLAKE-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:1.00] 4359 ; SKYLAKE-NEXT: #NO_APP 4360 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 4361 ; 4362 ; SKX-LABEL: test_cmpxchg_8: 4363 ; SKX: # %bb.0: 4364 ; SKX-NEXT: #APP 4365 ; SKX-NEXT: cmpxchgb %dil, %sil # sched: [5:1.25] 4366 ; SKX-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:1.00] 4367 ; SKX-NEXT: #NO_APP 4368 ; SKX-NEXT: retq # sched: [7:1.00] 4369 ; 4370 ; BTVER2-LABEL: test_cmpxchg_8: 4371 ; BTVER2: # %bb.0: 4372 ; BTVER2-NEXT: #APP 4373 ; BTVER2-NEXT: cmpxchgb %dil, %sil # sched: [1:0.50] 4374 ; BTVER2-NEXT: cmpxchgb %dil, (%rdx) # sched: [4:1.00] 4375 ; BTVER2-NEXT: #NO_APP 4376 ; BTVER2-NEXT: retq # sched: [4:1.00] 4377 ; 4378 ; ZNVER1-LABEL: test_cmpxchg_8: 4379 ; ZNVER1: # %bb.0: 4380 ; ZNVER1-NEXT: #APP 4381 ; ZNVER1-NEXT: cmpxchgb %dil, %sil # sched: [1:0.25] 4382 ; ZNVER1-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:0.50] 4383 ; ZNVER1-NEXT: #NO_APP 4384 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4385 tail call void asm "cmpxchgb $0, $1 \0a\09 cmpxchgb $0, $2", "r,r,*m"(i8 %a0, i8 %a1, i8 *%a2) nounwind 4386 ret void 4387 } 4388 define void @test_cmpxchg_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 4389 ; GENERIC-LABEL: test_cmpxchg_16: 4390 ; GENERIC: # %bb.0: 4391 ; GENERIC-NEXT: #APP 4392 ; GENERIC-NEXT: cmpxchgw %di, %si # sched: [5:1.33] 4393 ; GENERIC-NEXT: cmpxchgw %di, (%rdx) # sched: [8:1.00] 4394 ; GENERIC-NEXT: #NO_APP 4395 ; GENERIC-NEXT: retq # sched: [1:1.00] 4396 ; 4397 ; ATOM-LABEL: test_cmpxchg_16: 4398 ; ATOM: # %bb.0: 4399 ; ATOM-NEXT: #APP 4400 ; ATOM-NEXT: cmpxchgw %di, %si # sched: [15:7.50] 4401 ; ATOM-NEXT: cmpxchgw %di, (%rdx) # sched: [14:7.00] 4402 ; ATOM-NEXT: #NO_APP 4403 ; ATOM-NEXT: retq # sched: [79:39.50] 4404 ; 4405 ; SLM-LABEL: test_cmpxchg_16: 4406 ; SLM: # %bb.0: 4407 ; SLM-NEXT: #APP 4408 ; SLM-NEXT: cmpxchgw %di, %si # sched: [1:0.50] 4409 ; SLM-NEXT: cmpxchgw %di, (%rdx) # sched: [4:2.00] 4410 ; SLM-NEXT: #NO_APP 4411 ; SLM-NEXT: retq # sched: [4:1.00] 4412 ; 4413 ; SANDY-LABEL: test_cmpxchg_16: 4414 ; SANDY: # %bb.0: 4415 ; SANDY-NEXT: #APP 4416 ; SANDY-NEXT: cmpxchgw %di, %si # sched: [5:1.33] 4417 ; SANDY-NEXT: cmpxchgw %di, (%rdx) # sched: [8:1.00] 4418 ; SANDY-NEXT: #NO_APP 4419 ; SANDY-NEXT: retq # sched: [1:1.00] 4420 ; 4421 ; HASWELL-LABEL: test_cmpxchg_16: 4422 ; HASWELL: # %bb.0: 4423 ; HASWELL-NEXT: #APP 4424 ; HASWELL-NEXT: cmpxchgw %di, %si # sched: [5:1.25] 4425 ; HASWELL-NEXT: cmpxchgw %di, (%rdx) # sched: [9:1.00] 4426 ; HASWELL-NEXT: #NO_APP 4427 ; HASWELL-NEXT: retq # sched: [7:1.00] 4428 ; 4429 ; BROADWELL-LABEL: test_cmpxchg_16: 4430 ; BROADWELL: # %bb.0: 4431 ; BROADWELL-NEXT: #APP 4432 ; BROADWELL-NEXT: cmpxchgw %di, %si # sched: [5:1.25] 4433 ; BROADWELL-NEXT: cmpxchgw %di, (%rdx) # sched: [8:1.00] 4434 ; BROADWELL-NEXT: #NO_APP 4435 ; BROADWELL-NEXT: retq # sched: [7:1.00] 4436 ; 4437 ; SKYLAKE-LABEL: test_cmpxchg_16: 4438 ; SKYLAKE: # %bb.0: 4439 ; SKYLAKE-NEXT: #APP 4440 ; SKYLAKE-NEXT: cmpxchgw %di, %si # sched: [5:1.25] 4441 ; SKYLAKE-NEXT: cmpxchgw %di, (%rdx) # sched: [8:1.00] 4442 ; SKYLAKE-NEXT: #NO_APP 4443 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 4444 ; 4445 ; SKX-LABEL: test_cmpxchg_16: 4446 ; SKX: # %bb.0: 4447 ; SKX-NEXT: #APP 4448 ; SKX-NEXT: cmpxchgw %di, %si # sched: [5:1.25] 4449 ; SKX-NEXT: cmpxchgw %di, (%rdx) # sched: [8:1.00] 4450 ; SKX-NEXT: #NO_APP 4451 ; SKX-NEXT: retq # sched: [7:1.00] 4452 ; 4453 ; BTVER2-LABEL: test_cmpxchg_16: 4454 ; BTVER2: # %bb.0: 4455 ; BTVER2-NEXT: #APP 4456 ; BTVER2-NEXT: cmpxchgw %di, %si # sched: [1:0.50] 4457 ; BTVER2-NEXT: cmpxchgw %di, (%rdx) # sched: [4:1.00] 4458 ; BTVER2-NEXT: #NO_APP 4459 ; BTVER2-NEXT: retq # sched: [4:1.00] 4460 ; 4461 ; ZNVER1-LABEL: test_cmpxchg_16: 4462 ; ZNVER1: # %bb.0: 4463 ; ZNVER1-NEXT: #APP 4464 ; ZNVER1-NEXT: cmpxchgw %di, %si # sched: [1:0.25] 4465 ; ZNVER1-NEXT: cmpxchgw %di, (%rdx) # sched: [8:0.50] 4466 ; ZNVER1-NEXT: #NO_APP 4467 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4468 tail call void asm "cmpxchgw $0, $1 \0a\09 cmpxchgw $0, $2", "r,r,*m"(i16 %a0, i16 %a1, i16 *%a2) nounwind 4469 ret void 4470 } 4471 define void @test_cmpxchg_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 4472 ; GENERIC-LABEL: test_cmpxchg_32: 4473 ; GENERIC: # %bb.0: 4474 ; GENERIC-NEXT: #APP 4475 ; GENERIC-NEXT: cmpxchgl %edi, %esi # sched: [5:1.33] 4476 ; GENERIC-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:1.00] 4477 ; GENERIC-NEXT: #NO_APP 4478 ; GENERIC-NEXT: retq # sched: [1:1.00] 4479 ; 4480 ; ATOM-LABEL: test_cmpxchg_32: 4481 ; ATOM: # %bb.0: 4482 ; ATOM-NEXT: #APP 4483 ; ATOM-NEXT: cmpxchgl %edi, %esi # sched: [15:7.50] 4484 ; ATOM-NEXT: cmpxchgl %edi, (%rdx) # sched: [14:7.00] 4485 ; ATOM-NEXT: #NO_APP 4486 ; ATOM-NEXT: retq # sched: [79:39.50] 4487 ; 4488 ; SLM-LABEL: test_cmpxchg_32: 4489 ; SLM: # %bb.0: 4490 ; SLM-NEXT: #APP 4491 ; SLM-NEXT: cmpxchgl %edi, %esi # sched: [1:0.50] 4492 ; SLM-NEXT: cmpxchgl %edi, (%rdx) # sched: [4:2.00] 4493 ; SLM-NEXT: #NO_APP 4494 ; SLM-NEXT: retq # sched: [4:1.00] 4495 ; 4496 ; SANDY-LABEL: test_cmpxchg_32: 4497 ; SANDY: # %bb.0: 4498 ; SANDY-NEXT: #APP 4499 ; SANDY-NEXT: cmpxchgl %edi, %esi # sched: [5:1.33] 4500 ; SANDY-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:1.00] 4501 ; SANDY-NEXT: #NO_APP 4502 ; SANDY-NEXT: retq # sched: [1:1.00] 4503 ; 4504 ; HASWELL-LABEL: test_cmpxchg_32: 4505 ; HASWELL: # %bb.0: 4506 ; HASWELL-NEXT: #APP 4507 ; HASWELL-NEXT: cmpxchgl %edi, %esi # sched: [5:1.25] 4508 ; HASWELL-NEXT: cmpxchgl %edi, (%rdx) # sched: [9:1.00] 4509 ; HASWELL-NEXT: #NO_APP 4510 ; HASWELL-NEXT: retq # sched: [7:1.00] 4511 ; 4512 ; BROADWELL-LABEL: test_cmpxchg_32: 4513 ; BROADWELL: # %bb.0: 4514 ; BROADWELL-NEXT: #APP 4515 ; BROADWELL-NEXT: cmpxchgl %edi, %esi # sched: [5:1.25] 4516 ; BROADWELL-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:1.00] 4517 ; BROADWELL-NEXT: #NO_APP 4518 ; BROADWELL-NEXT: retq # sched: [7:1.00] 4519 ; 4520 ; SKYLAKE-LABEL: test_cmpxchg_32: 4521 ; SKYLAKE: # %bb.0: 4522 ; SKYLAKE-NEXT: #APP 4523 ; SKYLAKE-NEXT: cmpxchgl %edi, %esi # sched: [5:1.25] 4524 ; SKYLAKE-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:1.00] 4525 ; SKYLAKE-NEXT: #NO_APP 4526 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 4527 ; 4528 ; SKX-LABEL: test_cmpxchg_32: 4529 ; SKX: # %bb.0: 4530 ; SKX-NEXT: #APP 4531 ; SKX-NEXT: cmpxchgl %edi, %esi # sched: [5:1.25] 4532 ; SKX-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:1.00] 4533 ; SKX-NEXT: #NO_APP 4534 ; SKX-NEXT: retq # sched: [7:1.00] 4535 ; 4536 ; BTVER2-LABEL: test_cmpxchg_32: 4537 ; BTVER2: # %bb.0: 4538 ; BTVER2-NEXT: #APP 4539 ; BTVER2-NEXT: cmpxchgl %edi, %esi # sched: [1:0.50] 4540 ; BTVER2-NEXT: cmpxchgl %edi, (%rdx) # sched: [4:1.00] 4541 ; BTVER2-NEXT: #NO_APP 4542 ; BTVER2-NEXT: retq # sched: [4:1.00] 4543 ; 4544 ; ZNVER1-LABEL: test_cmpxchg_32: 4545 ; ZNVER1: # %bb.0: 4546 ; ZNVER1-NEXT: #APP 4547 ; ZNVER1-NEXT: cmpxchgl %edi, %esi # sched: [1:0.25] 4548 ; ZNVER1-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:0.50] 4549 ; ZNVER1-NEXT: #NO_APP 4550 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4551 tail call void asm "cmpxchgl $0, $1 \0a\09 cmpxchgl $0, $2", "r,r,*m"(i32 %a0, i32 %a1, i32 *%a2) nounwind 4552 ret void 4553 } 4554 define void @test_cmpxchg_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 4555 ; GENERIC-LABEL: test_cmpxchg_64: 4556 ; GENERIC: # %bb.0: 4557 ; GENERIC-NEXT: #APP 4558 ; GENERIC-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.33] 4559 ; GENERIC-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:1.00] 4560 ; GENERIC-NEXT: #NO_APP 4561 ; GENERIC-NEXT: retq # sched: [1:1.00] 4562 ; 4563 ; ATOM-LABEL: test_cmpxchg_64: 4564 ; ATOM: # %bb.0: 4565 ; ATOM-NEXT: #APP 4566 ; ATOM-NEXT: cmpxchgq %rdi, %rsi # sched: [15:7.50] 4567 ; ATOM-NEXT: cmpxchgq %rdi, (%rdx) # sched: [14:7.00] 4568 ; ATOM-NEXT: #NO_APP 4569 ; ATOM-NEXT: retq # sched: [79:39.50] 4570 ; 4571 ; SLM-LABEL: test_cmpxchg_64: 4572 ; SLM: # %bb.0: 4573 ; SLM-NEXT: #APP 4574 ; SLM-NEXT: cmpxchgq %rdi, %rsi # sched: [1:0.50] 4575 ; SLM-NEXT: cmpxchgq %rdi, (%rdx) # sched: [4:2.00] 4576 ; SLM-NEXT: #NO_APP 4577 ; SLM-NEXT: retq # sched: [4:1.00] 4578 ; 4579 ; SANDY-LABEL: test_cmpxchg_64: 4580 ; SANDY: # %bb.0: 4581 ; SANDY-NEXT: #APP 4582 ; SANDY-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.33] 4583 ; SANDY-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:1.00] 4584 ; SANDY-NEXT: #NO_APP 4585 ; SANDY-NEXT: retq # sched: [1:1.00] 4586 ; 4587 ; HASWELL-LABEL: test_cmpxchg_64: 4588 ; HASWELL: # %bb.0: 4589 ; HASWELL-NEXT: #APP 4590 ; HASWELL-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.25] 4591 ; HASWELL-NEXT: cmpxchgq %rdi, (%rdx) # sched: [9:1.00] 4592 ; HASWELL-NEXT: #NO_APP 4593 ; HASWELL-NEXT: retq # sched: [7:1.00] 4594 ; 4595 ; BROADWELL-LABEL: test_cmpxchg_64: 4596 ; BROADWELL: # %bb.0: 4597 ; BROADWELL-NEXT: #APP 4598 ; BROADWELL-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.25] 4599 ; BROADWELL-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:1.00] 4600 ; BROADWELL-NEXT: #NO_APP 4601 ; BROADWELL-NEXT: retq # sched: [7:1.00] 4602 ; 4603 ; SKYLAKE-LABEL: test_cmpxchg_64: 4604 ; SKYLAKE: # %bb.0: 4605 ; SKYLAKE-NEXT: #APP 4606 ; SKYLAKE-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.25] 4607 ; SKYLAKE-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:1.00] 4608 ; SKYLAKE-NEXT: #NO_APP 4609 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 4610 ; 4611 ; SKX-LABEL: test_cmpxchg_64: 4612 ; SKX: # %bb.0: 4613 ; SKX-NEXT: #APP 4614 ; SKX-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.25] 4615 ; SKX-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:1.00] 4616 ; SKX-NEXT: #NO_APP 4617 ; SKX-NEXT: retq # sched: [7:1.00] 4618 ; 4619 ; BTVER2-LABEL: test_cmpxchg_64: 4620 ; BTVER2: # %bb.0: 4621 ; BTVER2-NEXT: #APP 4622 ; BTVER2-NEXT: cmpxchgq %rdi, %rsi # sched: [1:0.50] 4623 ; BTVER2-NEXT: cmpxchgq %rdi, (%rdx) # sched: [4:1.00] 4624 ; BTVER2-NEXT: #NO_APP 4625 ; BTVER2-NEXT: retq # sched: [4:1.00] 4626 ; 4627 ; ZNVER1-LABEL: test_cmpxchg_64: 4628 ; ZNVER1: # %bb.0: 4629 ; ZNVER1-NEXT: #APP 4630 ; ZNVER1-NEXT: cmpxchgq %rdi, %rsi # sched: [1:0.25] 4631 ; ZNVER1-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:0.50] 4632 ; ZNVER1-NEXT: #NO_APP 4633 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4634 tail call void asm "cmpxchgq $0, $1 \0a\09 cmpxchgq $0, $2", "r,r,*m"(i64 %a0, i64 %a1, i64 *%a2) nounwind 4635 ret void 4636 } 4637 define void @test_cmpxchg8b_cmpxchg16b(i8 *%a0) optsize { 4638 ; GENERIC-LABEL: test_cmpxchg8b_cmpxchg16b: 4639 ; GENERIC: # %bb.0: 4640 ; GENERIC-NEXT: #APP 4641 ; GENERIC-NEXT: cmpxchg8b (%rdi) # sched: [6:1.00] 4642 ; GENERIC-NEXT: cmpxchg16b (%rdi) # sched: [6:1.00] 4643 ; GENERIC-NEXT: #NO_APP 4644 ; GENERIC-NEXT: retq # sched: [1:1.00] 4645 ; 4646 ; ATOM-LABEL: test_cmpxchg8b_cmpxchg16b: 4647 ; ATOM: # %bb.0: 4648 ; ATOM-NEXT: #APP 4649 ; ATOM-NEXT: cmpxchg8b (%rdi) # sched: [18:9.00] 4650 ; ATOM-NEXT: cmpxchg16b (%rdi) # sched: [22:11.00] 4651 ; ATOM-NEXT: #NO_APP 4652 ; ATOM-NEXT: retq # sched: [79:39.50] 4653 ; 4654 ; SLM-LABEL: test_cmpxchg8b_cmpxchg16b: 4655 ; SLM: # %bb.0: 4656 ; SLM-NEXT: #APP 4657 ; SLM-NEXT: cmpxchg8b (%rdi) # sched: [4:2.00] 4658 ; SLM-NEXT: cmpxchg16b (%rdi) # sched: [4:2.00] 4659 ; SLM-NEXT: #NO_APP 4660 ; SLM-NEXT: retq # sched: [4:1.00] 4661 ; 4662 ; SANDY-LABEL: test_cmpxchg8b_cmpxchg16b: 4663 ; SANDY: # %bb.0: 4664 ; SANDY-NEXT: #APP 4665 ; SANDY-NEXT: cmpxchg8b (%rdi) # sched: [6:1.00] 4666 ; SANDY-NEXT: cmpxchg16b (%rdi) # sched: [6:1.00] 4667 ; SANDY-NEXT: #NO_APP 4668 ; SANDY-NEXT: retq # sched: [1:1.00] 4669 ; 4670 ; HASWELL-LABEL: test_cmpxchg8b_cmpxchg16b: 4671 ; HASWELL: # %bb.0: 4672 ; HASWELL-NEXT: #APP 4673 ; HASWELL-NEXT: cmpxchg8b (%rdi) # sched: [17:2.75] 4674 ; HASWELL-NEXT: cmpxchg16b (%rdi) # sched: [22:4.00] 4675 ; HASWELL-NEXT: #NO_APP 4676 ; HASWELL-NEXT: retq # sched: [7:1.00] 4677 ; 4678 ; BROADWELL-LABEL: test_cmpxchg8b_cmpxchg16b: 4679 ; BROADWELL: # %bb.0: 4680 ; BROADWELL-NEXT: #APP 4681 ; BROADWELL-NEXT: cmpxchg8b (%rdi) # sched: [16:2.75] 4682 ; BROADWELL-NEXT: cmpxchg16b (%rdi) # sched: [21:4.00] 4683 ; BROADWELL-NEXT: #NO_APP 4684 ; BROADWELL-NEXT: retq # sched: [7:1.00] 4685 ; 4686 ; SKYLAKE-LABEL: test_cmpxchg8b_cmpxchg16b: 4687 ; SKYLAKE: # %bb.0: 4688 ; SKYLAKE-NEXT: #APP 4689 ; SKYLAKE-NEXT: cmpxchg8b (%rdi) # sched: [16:2.75] 4690 ; SKYLAKE-NEXT: cmpxchg16b (%rdi) # sched: [23:4.00] 4691 ; SKYLAKE-NEXT: #NO_APP 4692 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 4693 ; 4694 ; SKX-LABEL: test_cmpxchg8b_cmpxchg16b: 4695 ; SKX: # %bb.0: 4696 ; SKX-NEXT: #APP 4697 ; SKX-NEXT: cmpxchg8b (%rdi) # sched: [16:2.75] 4698 ; SKX-NEXT: cmpxchg16b (%rdi) # sched: [23:4.00] 4699 ; SKX-NEXT: #NO_APP 4700 ; SKX-NEXT: retq # sched: [7:1.00] 4701 ; 4702 ; BTVER2-LABEL: test_cmpxchg8b_cmpxchg16b: 4703 ; BTVER2: # %bb.0: 4704 ; BTVER2-NEXT: #APP 4705 ; BTVER2-NEXT: cmpxchg8b (%rdi) # sched: [4:1.00] 4706 ; BTVER2-NEXT: cmpxchg16b (%rdi) # sched: [4:1.00] 4707 ; BTVER2-NEXT: #NO_APP 4708 ; BTVER2-NEXT: retq # sched: [4:1.00] 4709 ; 4710 ; ZNVER1-LABEL: test_cmpxchg8b_cmpxchg16b: 4711 ; ZNVER1: # %bb.0: 4712 ; ZNVER1-NEXT: #APP 4713 ; ZNVER1-NEXT: cmpxchg8b (%rdi) # sched: [1:0.50] 4714 ; ZNVER1-NEXT: cmpxchg16b (%rdi) # sched: [100:0.25] 4715 ; ZNVER1-NEXT: #NO_APP 4716 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4717 tail call void asm "cmpxchg8b $0 \0a\09 cmpxchg16b $0", "*m"(i8 *%a0) nounwind 4718 ret void 4719 } 4720 4721 define void @test_cpuid() optsize { 4722 ; GENERIC-LABEL: test_cpuid: 4723 ; GENERIC: # %bb.0: 4724 ; GENERIC-NEXT: #APP 4725 ; GENERIC-NEXT: cpuid # sched: [100:0.33] 4726 ; GENERIC-NEXT: #NO_APP 4727 ; GENERIC-NEXT: retq # sched: [1:1.00] 4728 ; 4729 ; ATOM-LABEL: test_cpuid: 4730 ; ATOM: # %bb.0: 4731 ; ATOM-NEXT: #APP 4732 ; ATOM-NEXT: cpuid # sched: [121:60.50] 4733 ; ATOM-NEXT: #NO_APP 4734 ; ATOM-NEXT: retq # sched: [79:39.50] 4735 ; 4736 ; SLM-LABEL: test_cpuid: 4737 ; SLM: # %bb.0: 4738 ; SLM-NEXT: #APP 4739 ; SLM-NEXT: cpuid # sched: [100:1.00] 4740 ; SLM-NEXT: #NO_APP 4741 ; SLM-NEXT: retq # sched: [4:1.00] 4742 ; 4743 ; SANDY-LABEL: test_cpuid: 4744 ; SANDY: # %bb.0: 4745 ; SANDY-NEXT: #APP 4746 ; SANDY-NEXT: cpuid # sched: [100:0.33] 4747 ; SANDY-NEXT: #NO_APP 4748 ; SANDY-NEXT: retq # sched: [1:1.00] 4749 ; 4750 ; HASWELL-LABEL: test_cpuid: 4751 ; HASWELL: # %bb.0: 4752 ; HASWELL-NEXT: #APP 4753 ; HASWELL-NEXT: cpuid # sched: [18:2.00] 4754 ; HASWELL-NEXT: #NO_APP 4755 ; HASWELL-NEXT: retq # sched: [7:1.00] 4756 ; 4757 ; BROADWELL-LABEL: test_cpuid: 4758 ; BROADWELL: # %bb.0: 4759 ; BROADWELL-NEXT: #APP 4760 ; BROADWELL-NEXT: cpuid # sched: [18:2.00] 4761 ; BROADWELL-NEXT: #NO_APP 4762 ; BROADWELL-NEXT: retq # sched: [7:1.00] 4763 ; 4764 ; SKYLAKE-LABEL: test_cpuid: 4765 ; SKYLAKE: # %bb.0: 4766 ; SKYLAKE-NEXT: #APP 4767 ; SKYLAKE-NEXT: cpuid # sched: [18:2.00] 4768 ; SKYLAKE-NEXT: #NO_APP 4769 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 4770 ; 4771 ; SKX-LABEL: test_cpuid: 4772 ; SKX: # %bb.0: 4773 ; SKX-NEXT: #APP 4774 ; SKX-NEXT: cpuid # sched: [18:2.00] 4775 ; SKX-NEXT: #NO_APP 4776 ; SKX-NEXT: retq # sched: [7:1.00] 4777 ; 4778 ; BTVER2-LABEL: test_cpuid: 4779 ; BTVER2: # %bb.0: 4780 ; BTVER2-NEXT: #APP 4781 ; BTVER2-NEXT: cpuid # sched: [100:0.50] 4782 ; BTVER2-NEXT: #NO_APP 4783 ; BTVER2-NEXT: retq # sched: [4:1.00] 4784 ; 4785 ; ZNVER1-LABEL: test_cpuid: 4786 ; ZNVER1: # %bb.0: 4787 ; ZNVER1-NEXT: #APP 4788 ; ZNVER1-NEXT: cpuid # sched: [100:0.25] 4789 ; ZNVER1-NEXT: #NO_APP 4790 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4791 tail call void asm "cpuid", ""() nounwind 4792 ret void 4793 } 4794 4795 define void @test_dec8(i8 %a0, i8* %a1) optsize { 4796 ; GENERIC-LABEL: test_dec8: 4797 ; GENERIC: # %bb.0: 4798 ; GENERIC-NEXT: #APP 4799 ; GENERIC-NEXT: decb %dil # sched: [1:0.33] 4800 ; GENERIC-NEXT: decb (%rsi) # sched: [7:1.00] 4801 ; GENERIC-NEXT: #NO_APP 4802 ; GENERIC-NEXT: retq # sched: [1:1.00] 4803 ; 4804 ; ATOM-LABEL: test_dec8: 4805 ; ATOM: # %bb.0: 4806 ; ATOM-NEXT: #APP 4807 ; ATOM-NEXT: decb %dil # sched: [1:0.50] 4808 ; ATOM-NEXT: decb (%rsi) # sched: [1:1.00] 4809 ; ATOM-NEXT: #NO_APP 4810 ; ATOM-NEXT: retq # sched: [79:39.50] 4811 ; 4812 ; SLM-LABEL: test_dec8: 4813 ; SLM: # %bb.0: 4814 ; SLM-NEXT: #APP 4815 ; SLM-NEXT: decb %dil # sched: [1:0.50] 4816 ; SLM-NEXT: decb (%rsi) # sched: [5:2.00] 4817 ; SLM-NEXT: #NO_APP 4818 ; SLM-NEXT: retq # sched: [4:1.00] 4819 ; 4820 ; SANDY-LABEL: test_dec8: 4821 ; SANDY: # %bb.0: 4822 ; SANDY-NEXT: #APP 4823 ; SANDY-NEXT: decb %dil # sched: [1:0.33] 4824 ; SANDY-NEXT: decb (%rsi) # sched: [7:1.00] 4825 ; SANDY-NEXT: #NO_APP 4826 ; SANDY-NEXT: retq # sched: [1:1.00] 4827 ; 4828 ; HASWELL-LABEL: test_dec8: 4829 ; HASWELL: # %bb.0: 4830 ; HASWELL-NEXT: #APP 4831 ; HASWELL-NEXT: decb %dil # sched: [1:0.25] 4832 ; HASWELL-NEXT: decb (%rsi) # sched: [7:1.00] 4833 ; HASWELL-NEXT: #NO_APP 4834 ; HASWELL-NEXT: retq # sched: [7:1.00] 4835 ; 4836 ; BROADWELL-LABEL: test_dec8: 4837 ; BROADWELL: # %bb.0: 4838 ; BROADWELL-NEXT: #APP 4839 ; BROADWELL-NEXT: decb %dil # sched: [1:0.25] 4840 ; BROADWELL-NEXT: decb (%rsi) # sched: [7:1.00] 4841 ; BROADWELL-NEXT: #NO_APP 4842 ; BROADWELL-NEXT: retq # sched: [7:1.00] 4843 ; 4844 ; SKYLAKE-LABEL: test_dec8: 4845 ; SKYLAKE: # %bb.0: 4846 ; SKYLAKE-NEXT: #APP 4847 ; SKYLAKE-NEXT: decb %dil # sched: [1:0.25] 4848 ; SKYLAKE-NEXT: decb (%rsi) # sched: [7:1.00] 4849 ; SKYLAKE-NEXT: #NO_APP 4850 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 4851 ; 4852 ; SKX-LABEL: test_dec8: 4853 ; SKX: # %bb.0: 4854 ; SKX-NEXT: #APP 4855 ; SKX-NEXT: decb %dil # sched: [1:0.25] 4856 ; SKX-NEXT: decb (%rsi) # sched: [7:1.00] 4857 ; SKX-NEXT: #NO_APP 4858 ; SKX-NEXT: retq # sched: [7:1.00] 4859 ; 4860 ; BTVER2-LABEL: test_dec8: 4861 ; BTVER2: # %bb.0: 4862 ; BTVER2-NEXT: #APP 4863 ; BTVER2-NEXT: decb %dil # sched: [1:0.50] 4864 ; BTVER2-NEXT: decb (%rsi) # sched: [5:1.00] 4865 ; BTVER2-NEXT: #NO_APP 4866 ; BTVER2-NEXT: retq # sched: [4:1.00] 4867 ; 4868 ; ZNVER1-LABEL: test_dec8: 4869 ; ZNVER1: # %bb.0: 4870 ; ZNVER1-NEXT: #APP 4871 ; ZNVER1-NEXT: decb %dil # sched: [1:0.25] 4872 ; ZNVER1-NEXT: decb (%rsi) # sched: [5:0.50] 4873 ; ZNVER1-NEXT: #NO_APP 4874 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4875 tail call void asm "decb $0 \0A\09 decb $1", "r,*m"(i8 %a0, i8* %a1) nounwind 4876 ret void 4877 } 4878 define void @test_dec16(i16 %a0, i16* %a1) optsize { 4879 ; GENERIC-LABEL: test_dec16: 4880 ; GENERIC: # %bb.0: 4881 ; GENERIC-NEXT: #APP 4882 ; GENERIC-NEXT: decw %di # sched: [1:0.33] 4883 ; GENERIC-NEXT: decw (%rsi) # sched: [7:1.00] 4884 ; GENERIC-NEXT: #NO_APP 4885 ; GENERIC-NEXT: retq # sched: [1:1.00] 4886 ; 4887 ; ATOM-LABEL: test_dec16: 4888 ; ATOM: # %bb.0: 4889 ; ATOM-NEXT: #APP 4890 ; ATOM-NEXT: decw %di # sched: [1:0.50] 4891 ; ATOM-NEXT: decw (%rsi) # sched: [1:1.00] 4892 ; ATOM-NEXT: #NO_APP 4893 ; ATOM-NEXT: retq # sched: [79:39.50] 4894 ; 4895 ; SLM-LABEL: test_dec16: 4896 ; SLM: # %bb.0: 4897 ; SLM-NEXT: #APP 4898 ; SLM-NEXT: decw %di # sched: [1:0.50] 4899 ; SLM-NEXT: decw (%rsi) # sched: [5:2.00] 4900 ; SLM-NEXT: #NO_APP 4901 ; SLM-NEXT: retq # sched: [4:1.00] 4902 ; 4903 ; SANDY-LABEL: test_dec16: 4904 ; SANDY: # %bb.0: 4905 ; SANDY-NEXT: #APP 4906 ; SANDY-NEXT: decw %di # sched: [1:0.33] 4907 ; SANDY-NEXT: decw (%rsi) # sched: [7:1.00] 4908 ; SANDY-NEXT: #NO_APP 4909 ; SANDY-NEXT: retq # sched: [1:1.00] 4910 ; 4911 ; HASWELL-LABEL: test_dec16: 4912 ; HASWELL: # %bb.0: 4913 ; HASWELL-NEXT: #APP 4914 ; HASWELL-NEXT: decw %di # sched: [1:0.25] 4915 ; HASWELL-NEXT: decw (%rsi) # sched: [7:1.00] 4916 ; HASWELL-NEXT: #NO_APP 4917 ; HASWELL-NEXT: retq # sched: [7:1.00] 4918 ; 4919 ; BROADWELL-LABEL: test_dec16: 4920 ; BROADWELL: # %bb.0: 4921 ; BROADWELL-NEXT: #APP 4922 ; BROADWELL-NEXT: decw %di # sched: [1:0.25] 4923 ; BROADWELL-NEXT: decw (%rsi) # sched: [7:1.00] 4924 ; BROADWELL-NEXT: #NO_APP 4925 ; BROADWELL-NEXT: retq # sched: [7:1.00] 4926 ; 4927 ; SKYLAKE-LABEL: test_dec16: 4928 ; SKYLAKE: # %bb.0: 4929 ; SKYLAKE-NEXT: #APP 4930 ; SKYLAKE-NEXT: decw %di # sched: [1:0.25] 4931 ; SKYLAKE-NEXT: decw (%rsi) # sched: [7:1.00] 4932 ; SKYLAKE-NEXT: #NO_APP 4933 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 4934 ; 4935 ; SKX-LABEL: test_dec16: 4936 ; SKX: # %bb.0: 4937 ; SKX-NEXT: #APP 4938 ; SKX-NEXT: decw %di # sched: [1:0.25] 4939 ; SKX-NEXT: decw (%rsi) # sched: [7:1.00] 4940 ; SKX-NEXT: #NO_APP 4941 ; SKX-NEXT: retq # sched: [7:1.00] 4942 ; 4943 ; BTVER2-LABEL: test_dec16: 4944 ; BTVER2: # %bb.0: 4945 ; BTVER2-NEXT: #APP 4946 ; BTVER2-NEXT: decw %di # sched: [1:0.50] 4947 ; BTVER2-NEXT: decw (%rsi) # sched: [5:1.00] 4948 ; BTVER2-NEXT: #NO_APP 4949 ; BTVER2-NEXT: retq # sched: [4:1.00] 4950 ; 4951 ; ZNVER1-LABEL: test_dec16: 4952 ; ZNVER1: # %bb.0: 4953 ; ZNVER1-NEXT: #APP 4954 ; ZNVER1-NEXT: decw %di # sched: [1:0.25] 4955 ; ZNVER1-NEXT: decw (%rsi) # sched: [5:0.50] 4956 ; ZNVER1-NEXT: #NO_APP 4957 ; ZNVER1-NEXT: retq # sched: [1:0.50] 4958 tail call void asm "decw $0 \0A\09 decw $1", "r,*m"(i16 %a0, i16* %a1) nounwind 4959 ret void 4960 } 4961 define void @test_dec32(i32 %a0, i32* %a1) optsize { 4962 ; GENERIC-LABEL: test_dec32: 4963 ; GENERIC: # %bb.0: 4964 ; GENERIC-NEXT: #APP 4965 ; GENERIC-NEXT: decl %edi # sched: [1:0.33] 4966 ; GENERIC-NEXT: decl (%rsi) # sched: [7:1.00] 4967 ; GENERIC-NEXT: #NO_APP 4968 ; GENERIC-NEXT: retq # sched: [1:1.00] 4969 ; 4970 ; ATOM-LABEL: test_dec32: 4971 ; ATOM: # %bb.0: 4972 ; ATOM-NEXT: #APP 4973 ; ATOM-NEXT: decl %edi # sched: [1:0.50] 4974 ; ATOM-NEXT: decl (%rsi) # sched: [1:1.00] 4975 ; ATOM-NEXT: #NO_APP 4976 ; ATOM-NEXT: retq # sched: [79:39.50] 4977 ; 4978 ; SLM-LABEL: test_dec32: 4979 ; SLM: # %bb.0: 4980 ; SLM-NEXT: #APP 4981 ; SLM-NEXT: decl %edi # sched: [1:0.50] 4982 ; SLM-NEXT: decl (%rsi) # sched: [5:2.00] 4983 ; SLM-NEXT: #NO_APP 4984 ; SLM-NEXT: retq # sched: [4:1.00] 4985 ; 4986 ; SANDY-LABEL: test_dec32: 4987 ; SANDY: # %bb.0: 4988 ; SANDY-NEXT: #APP 4989 ; SANDY-NEXT: decl %edi # sched: [1:0.33] 4990 ; SANDY-NEXT: decl (%rsi) # sched: [7:1.00] 4991 ; SANDY-NEXT: #NO_APP 4992 ; SANDY-NEXT: retq # sched: [1:1.00] 4993 ; 4994 ; HASWELL-LABEL: test_dec32: 4995 ; HASWELL: # %bb.0: 4996 ; HASWELL-NEXT: #APP 4997 ; HASWELL-NEXT: decl %edi # sched: [1:0.25] 4998 ; HASWELL-NEXT: decl (%rsi) # sched: [7:1.00] 4999 ; HASWELL-NEXT: #NO_APP 5000 ; HASWELL-NEXT: retq # sched: [7:1.00] 5001 ; 5002 ; BROADWELL-LABEL: test_dec32: 5003 ; BROADWELL: # %bb.0: 5004 ; BROADWELL-NEXT: #APP 5005 ; BROADWELL-NEXT: decl %edi # sched: [1:0.25] 5006 ; BROADWELL-NEXT: decl (%rsi) # sched: [7:1.00] 5007 ; BROADWELL-NEXT: #NO_APP 5008 ; BROADWELL-NEXT: retq # sched: [7:1.00] 5009 ; 5010 ; SKYLAKE-LABEL: test_dec32: 5011 ; SKYLAKE: # %bb.0: 5012 ; SKYLAKE-NEXT: #APP 5013 ; SKYLAKE-NEXT: decl %edi # sched: [1:0.25] 5014 ; SKYLAKE-NEXT: decl (%rsi) # sched: [7:1.00] 5015 ; SKYLAKE-NEXT: #NO_APP 5016 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 5017 ; 5018 ; SKX-LABEL: test_dec32: 5019 ; SKX: # %bb.0: 5020 ; SKX-NEXT: #APP 5021 ; SKX-NEXT: decl %edi # sched: [1:0.25] 5022 ; SKX-NEXT: decl (%rsi) # sched: [7:1.00] 5023 ; SKX-NEXT: #NO_APP 5024 ; SKX-NEXT: retq # sched: [7:1.00] 5025 ; 5026 ; BTVER2-LABEL: test_dec32: 5027 ; BTVER2: # %bb.0: 5028 ; BTVER2-NEXT: #APP 5029 ; BTVER2-NEXT: decl %edi # sched: [1:0.50] 5030 ; BTVER2-NEXT: decl (%rsi) # sched: [5:1.00] 5031 ; BTVER2-NEXT: #NO_APP 5032 ; BTVER2-NEXT: retq # sched: [4:1.00] 5033 ; 5034 ; ZNVER1-LABEL: test_dec32: 5035 ; ZNVER1: # %bb.0: 5036 ; ZNVER1-NEXT: #APP 5037 ; ZNVER1-NEXT: decl %edi # sched: [1:0.25] 5038 ; ZNVER1-NEXT: decl (%rsi) # sched: [5:0.50] 5039 ; ZNVER1-NEXT: #NO_APP 5040 ; ZNVER1-NEXT: retq # sched: [1:0.50] 5041 tail call void asm "decl $0 \0A\09 decl $1", "r,*m"(i32 %a0, i32* %a1) nounwind 5042 ret void 5043 } 5044 define void @test_dec64(i64 %a0, i64* %a1) optsize { 5045 ; GENERIC-LABEL: test_dec64: 5046 ; GENERIC: # %bb.0: 5047 ; GENERIC-NEXT: #APP 5048 ; GENERIC-NEXT: decq %rdi # sched: [1:0.33] 5049 ; GENERIC-NEXT: decq (%rsi) # sched: [7:1.00] 5050 ; GENERIC-NEXT: #NO_APP 5051 ; GENERIC-NEXT: retq # sched: [1:1.00] 5052 ; 5053 ; ATOM-LABEL: test_dec64: 5054 ; ATOM: # %bb.0: 5055 ; ATOM-NEXT: #APP 5056 ; ATOM-NEXT: decq %rdi # sched: [1:0.50] 5057 ; ATOM-NEXT: decq (%rsi) # sched: [1:1.00] 5058 ; ATOM-NEXT: #NO_APP 5059 ; ATOM-NEXT: retq # sched: [79:39.50] 5060 ; 5061 ; SLM-LABEL: test_dec64: 5062 ; SLM: # %bb.0: 5063 ; SLM-NEXT: #APP 5064 ; SLM-NEXT: decq %rdi # sched: [1:0.50] 5065 ; SLM-NEXT: decq (%rsi) # sched: [5:2.00] 5066 ; SLM-NEXT: #NO_APP 5067 ; SLM-NEXT: retq # sched: [4:1.00] 5068 ; 5069 ; SANDY-LABEL: test_dec64: 5070 ; SANDY: # %bb.0: 5071 ; SANDY-NEXT: #APP 5072 ; SANDY-NEXT: decq %rdi # sched: [1:0.33] 5073 ; SANDY-NEXT: decq (%rsi) # sched: [7:1.00] 5074 ; SANDY-NEXT: #NO_APP 5075 ; SANDY-NEXT: retq # sched: [1:1.00] 5076 ; 5077 ; HASWELL-LABEL: test_dec64: 5078 ; HASWELL: # %bb.0: 5079 ; HASWELL-NEXT: #APP 5080 ; HASWELL-NEXT: decq %rdi # sched: [1:0.25] 5081 ; HASWELL-NEXT: decq (%rsi) # sched: [7:1.00] 5082 ; HASWELL-NEXT: #NO_APP 5083 ; HASWELL-NEXT: retq # sched: [7:1.00] 5084 ; 5085 ; BROADWELL-LABEL: test_dec64: 5086 ; BROADWELL: # %bb.0: 5087 ; BROADWELL-NEXT: #APP 5088 ; BROADWELL-NEXT: decq %rdi # sched: [1:0.25] 5089 ; BROADWELL-NEXT: decq (%rsi) # sched: [7:1.00] 5090 ; BROADWELL-NEXT: #NO_APP 5091 ; BROADWELL-NEXT: retq # sched: [7:1.00] 5092 ; 5093 ; SKYLAKE-LABEL: test_dec64: 5094 ; SKYLAKE: # %bb.0: 5095 ; SKYLAKE-NEXT: #APP 5096 ; SKYLAKE-NEXT: decq %rdi # sched: [1:0.25] 5097 ; SKYLAKE-NEXT: decq (%rsi) # sched: [7:1.00] 5098 ; SKYLAKE-NEXT: #NO_APP 5099 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 5100 ; 5101 ; SKX-LABEL: test_dec64: 5102 ; SKX: # %bb.0: 5103 ; SKX-NEXT: #APP 5104 ; SKX-NEXT: decq %rdi # sched: [1:0.25] 5105 ; SKX-NEXT: decq (%rsi) # sched: [7:1.00] 5106 ; SKX-NEXT: #NO_APP 5107 ; SKX-NEXT: retq # sched: [7:1.00] 5108 ; 5109 ; BTVER2-LABEL: test_dec64: 5110 ; BTVER2: # %bb.0: 5111 ; BTVER2-NEXT: #APP 5112 ; BTVER2-NEXT: decq %rdi # sched: [1:0.50] 5113 ; BTVER2-NEXT: decq (%rsi) # sched: [5:1.00] 5114 ; BTVER2-NEXT: #NO_APP 5115 ; BTVER2-NEXT: retq # sched: [4:1.00] 5116 ; 5117 ; ZNVER1-LABEL: test_dec64: 5118 ; ZNVER1: # %bb.0: 5119 ; ZNVER1-NEXT: #APP 5120 ; ZNVER1-NEXT: decq %rdi # sched: [1:0.25] 5121 ; ZNVER1-NEXT: decq (%rsi) # sched: [5:0.50] 5122 ; ZNVER1-NEXT: #NO_APP 5123 ; ZNVER1-NEXT: retq # sched: [1:0.50] 5124 tail call void asm "decq $0 \0A\09 decq $1", "r,*m"(i64 %a0, i64* %a1) nounwind 5125 ret void 5126 } 5127 5128 define void @test_div(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) optsize { 5129 ; GENERIC-LABEL: test_div: 5130 ; GENERIC: # %bb.0: 5131 ; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5132 ; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5133 ; GENERIC-NEXT: #APP 5134 ; GENERIC-NEXT: divb %dil # sched: [25:10.00] 5135 ; GENERIC-NEXT: divb (%r8) # sched: [30:10.00] 5136 ; GENERIC-NEXT: divw %si # sched: [25:10.00] 5137 ; GENERIC-NEXT: divw (%r9) # sched: [30:10.00] 5138 ; GENERIC-NEXT: divl %edx # sched: [25:10.00] 5139 ; GENERIC-NEXT: divl (%rax) # sched: [30:10.00] 5140 ; GENERIC-NEXT: divq %rcx # sched: [25:10.00] 5141 ; GENERIC-NEXT: divq (%r10) # sched: [30:10.00] 5142 ; GENERIC-NEXT: #NO_APP 5143 ; GENERIC-NEXT: retq # sched: [1:1.00] 5144 ; 5145 ; ATOM-LABEL: test_div: 5146 ; ATOM: # %bb.0: 5147 ; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [1:1.00] 5148 ; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [1:1.00] 5149 ; ATOM-NEXT: #APP 5150 ; ATOM-NEXT: divb %dil # sched: [50:25.00] 5151 ; ATOM-NEXT: divb (%r8) # sched: [68:34.00] 5152 ; ATOM-NEXT: divw %si # sched: [50:25.00] 5153 ; ATOM-NEXT: divw (%r9) # sched: [50:25.00] 5154 ; ATOM-NEXT: divl %edx # sched: [50:25.00] 5155 ; ATOM-NEXT: divl (%rax) # sched: [50:25.00] 5156 ; ATOM-NEXT: divq %rcx # sched: [130:65.00] 5157 ; ATOM-NEXT: divq (%r10) # sched: [130:65.00] 5158 ; ATOM-NEXT: #NO_APP 5159 ; ATOM-NEXT: retq # sched: [79:39.50] 5160 ; 5161 ; SLM-LABEL: test_div: 5162 ; SLM: # %bb.0: 5163 ; SLM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [3:1.00] 5164 ; SLM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [3:1.00] 5165 ; SLM-NEXT: #APP 5166 ; SLM-NEXT: divb %dil # sched: [25:25.00] 5167 ; SLM-NEXT: divb (%r8) # sched: [29:25.00] 5168 ; SLM-NEXT: divw %si # sched: [25:25.00] 5169 ; SLM-NEXT: divw (%r9) # sched: [29:25.00] 5170 ; SLM-NEXT: divl %edx # sched: [25:25.00] 5171 ; SLM-NEXT: divl (%rax) # sched: [29:25.00] 5172 ; SLM-NEXT: divq %rcx # sched: [25:25.00] 5173 ; SLM-NEXT: divq (%r10) # sched: [29:25.00] 5174 ; SLM-NEXT: #NO_APP 5175 ; SLM-NEXT: retq # sched: [4:1.00] 5176 ; 5177 ; SANDY-LABEL: test_div: 5178 ; SANDY: # %bb.0: 5179 ; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5180 ; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5181 ; SANDY-NEXT: #APP 5182 ; SANDY-NEXT: divb %dil # sched: [25:10.00] 5183 ; SANDY-NEXT: divb (%r8) # sched: [30:10.00] 5184 ; SANDY-NEXT: divw %si # sched: [25:10.00] 5185 ; SANDY-NEXT: divw (%r9) # sched: [30:10.00] 5186 ; SANDY-NEXT: divl %edx # sched: [25:10.00] 5187 ; SANDY-NEXT: divl (%rax) # sched: [30:10.00] 5188 ; SANDY-NEXT: divq %rcx # sched: [25:10.00] 5189 ; SANDY-NEXT: divq (%r10) # sched: [30:10.00] 5190 ; SANDY-NEXT: #NO_APP 5191 ; SANDY-NEXT: retq # sched: [1:1.00] 5192 ; 5193 ; HASWELL-LABEL: test_div: 5194 ; HASWELL: # %bb.0: 5195 ; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5196 ; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5197 ; HASWELL-NEXT: #APP 5198 ; HASWELL-NEXT: divb %dil # sched: [22:1.00] 5199 ; HASWELL-NEXT: divb (%r8) # sched: [29:10.00] 5200 ; HASWELL-NEXT: divw %si # sched: [98:8.00] 5201 ; HASWELL-NEXT: divw (%r9) # sched: [29:10.00] 5202 ; HASWELL-NEXT: divl %edx # sched: [98:8.00] 5203 ; HASWELL-NEXT: divl (%rax) # sched: [29:10.00] 5204 ; HASWELL-NEXT: divq %rcx # sched: [98:8.00] 5205 ; HASWELL-NEXT: divq (%r10) # sched: [29:10.00] 5206 ; HASWELL-NEXT: #NO_APP 5207 ; HASWELL-NEXT: retq # sched: [7:1.00] 5208 ; 5209 ; BROADWELL-LABEL: test_div: 5210 ; BROADWELL: # %bb.0: 5211 ; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5212 ; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5213 ; BROADWELL-NEXT: #APP 5214 ; BROADWELL-NEXT: divb %dil # sched: [25:10.00] 5215 ; BROADWELL-NEXT: divb (%r8) # sched: [34:2.00] 5216 ; BROADWELL-NEXT: divw %si # sched: [80:8.00] 5217 ; BROADWELL-NEXT: divw (%r9) # sched: [34:2.00] 5218 ; BROADWELL-NEXT: divl %edx # sched: [80:8.00] 5219 ; BROADWELL-NEXT: divl (%rax) # sched: [34:2.00] 5220 ; BROADWELL-NEXT: divq %rcx # sched: [80:8.00] 5221 ; BROADWELL-NEXT: divq (%r10) # sched: [34:2.00] 5222 ; BROADWELL-NEXT: #NO_APP 5223 ; BROADWELL-NEXT: retq # sched: [7:1.00] 5224 ; 5225 ; SKYLAKE-LABEL: test_div: 5226 ; SKYLAKE: # %bb.0: 5227 ; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5228 ; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5229 ; SKYLAKE-NEXT: #APP 5230 ; SKYLAKE-NEXT: divb %dil # sched: [25:10.00] 5231 ; SKYLAKE-NEXT: divb (%r8) # sched: [29:10.00] 5232 ; SKYLAKE-NEXT: divw %si # sched: [76:8.00] 5233 ; SKYLAKE-NEXT: divw (%r9) # sched: [29:10.00] 5234 ; SKYLAKE-NEXT: divl %edx # sched: [76:8.00] 5235 ; SKYLAKE-NEXT: divl (%rax) # sched: [29:10.00] 5236 ; SKYLAKE-NEXT: divq %rcx # sched: [76:8.00] 5237 ; SKYLAKE-NEXT: divq (%r10) # sched: [29:10.00] 5238 ; SKYLAKE-NEXT: #NO_APP 5239 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 5240 ; 5241 ; SKX-LABEL: test_div: 5242 ; SKX: # %bb.0: 5243 ; SKX-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5244 ; SKX-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5245 ; SKX-NEXT: #APP 5246 ; SKX-NEXT: divb %dil # sched: [25:10.00] 5247 ; SKX-NEXT: divb (%r8) # sched: [29:10.00] 5248 ; SKX-NEXT: divw %si # sched: [76:8.00] 5249 ; SKX-NEXT: divw (%r9) # sched: [29:10.00] 5250 ; SKX-NEXT: divl %edx # sched: [76:8.00] 5251 ; SKX-NEXT: divl (%rax) # sched: [29:10.00] 5252 ; SKX-NEXT: divq %rcx # sched: [76:8.00] 5253 ; SKX-NEXT: divq (%r10) # sched: [29:10.00] 5254 ; SKX-NEXT: #NO_APP 5255 ; SKX-NEXT: retq # sched: [7:1.00] 5256 ; 5257 ; BTVER2-LABEL: test_div: 5258 ; BTVER2: # %bb.0: 5259 ; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:1.00] 5260 ; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:1.00] 5261 ; BTVER2-NEXT: #APP 5262 ; BTVER2-NEXT: divb %dil # sched: [12:12.00] 5263 ; BTVER2-NEXT: divb (%r8) # sched: [15:12.00] 5264 ; BTVER2-NEXT: divw %si # sched: [17:17.00] 5265 ; BTVER2-NEXT: divw (%r9) # sched: [20:17.00] 5266 ; BTVER2-NEXT: divl %edx # sched: [25:25.00] 5267 ; BTVER2-NEXT: divl (%rax) # sched: [28:25.00] 5268 ; BTVER2-NEXT: divq %rcx # sched: [41:41.00] 5269 ; BTVER2-NEXT: divq (%r10) # sched: [44:41.00] 5270 ; BTVER2-NEXT: #NO_APP 5271 ; BTVER2-NEXT: retq # sched: [4:1.00] 5272 ; 5273 ; ZNVER1-LABEL: test_div: 5274 ; ZNVER1: # %bb.0: 5275 ; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [8:0.50] 5276 ; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [8:0.50] 5277 ; ZNVER1-NEXT: #APP 5278 ; ZNVER1-NEXT: divb %dil # sched: [15:15.00] 5279 ; ZNVER1-NEXT: divb (%r8) # sched: [19:15.00] 5280 ; ZNVER1-NEXT: divw %si # sched: [17:17.00] 5281 ; ZNVER1-NEXT: divw (%r9) # sched: [21:17.00] 5282 ; ZNVER1-NEXT: divl %edx # sched: [25:25.00] 5283 ; ZNVER1-NEXT: divl (%rax) # sched: [29:25.00] 5284 ; ZNVER1-NEXT: divq %rcx # sched: [41:41.00] 5285 ; ZNVER1-NEXT: divq (%r10) # sched: [45:41.00] 5286 ; ZNVER1-NEXT: #NO_APP 5287 ; ZNVER1-NEXT: retq # sched: [1:0.50] 5288 tail call void asm "divb $0 \0A\09 divb $4 \0A\09 divw $1 \0A\09 divw $5 \0A\09 divl $2 \0A\09 divl $6 \0A\09 divq $3 \0A\09 divq $7", "r,r,r,r,*m,*m,*m,*m"(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) nounwind 5289 ret void 5290 } 5291 5292 define void @test_enter() optsize { 5293 ; GENERIC-LABEL: test_enter: 5294 ; GENERIC: # %bb.0: 5295 ; GENERIC-NEXT: #APP 5296 ; GENERIC-NEXT: enter $7, $4095 # imm = 0xFFF 5297 ; GENERIC-NEXT: # sched: [100:0.33] 5298 ; GENERIC-NEXT: #NO_APP 5299 ; GENERIC-NEXT: retq # sched: [1:1.00] 5300 ; 5301 ; ATOM-LABEL: test_enter: 5302 ; ATOM: # %bb.0: 5303 ; ATOM-NEXT: #APP 5304 ; ATOM-NEXT: enter $7, $4095 # imm = 0xFFF 5305 ; ATOM-NEXT: # sched: [32:16.00] 5306 ; ATOM-NEXT: #NO_APP 5307 ; ATOM-NEXT: retq # sched: [79:39.50] 5308 ; 5309 ; SLM-LABEL: test_enter: 5310 ; SLM: # %bb.0: 5311 ; SLM-NEXT: #APP 5312 ; SLM-NEXT: enter $7, $4095 # imm = 0xFFF 5313 ; SLM-NEXT: # sched: [100:1.00] 5314 ; SLM-NEXT: #NO_APP 5315 ; SLM-NEXT: retq # sched: [4:1.00] 5316 ; 5317 ; SANDY-LABEL: test_enter: 5318 ; SANDY: # %bb.0: 5319 ; SANDY-NEXT: #APP 5320 ; SANDY-NEXT: enter $7, $4095 # imm = 0xFFF 5321 ; SANDY-NEXT: # sched: [100:0.33] 5322 ; SANDY-NEXT: #NO_APP 5323 ; SANDY-NEXT: retq # sched: [1:1.00] 5324 ; 5325 ; HASWELL-LABEL: test_enter: 5326 ; HASWELL: # %bb.0: 5327 ; HASWELL-NEXT: #APP 5328 ; HASWELL-NEXT: enter $7, $4095 # imm = 0xFFF 5329 ; HASWELL-NEXT: # sched: [100:0.25] 5330 ; HASWELL-NEXT: #NO_APP 5331 ; HASWELL-NEXT: retq # sched: [7:1.00] 5332 ; 5333 ; BROADWELL-LABEL: test_enter: 5334 ; BROADWELL: # %bb.0: 5335 ; BROADWELL-NEXT: #APP 5336 ; BROADWELL-NEXT: enter $7, $4095 # imm = 0xFFF 5337 ; BROADWELL-NEXT: # sched: [100:0.25] 5338 ; BROADWELL-NEXT: #NO_APP 5339 ; BROADWELL-NEXT: retq # sched: [7:1.00] 5340 ; 5341 ; SKYLAKE-LABEL: test_enter: 5342 ; SKYLAKE: # %bb.0: 5343 ; SKYLAKE-NEXT: #APP 5344 ; SKYLAKE-NEXT: enter $7, $4095 # imm = 0xFFF 5345 ; SKYLAKE-NEXT: # sched: [100:0.25] 5346 ; SKYLAKE-NEXT: #NO_APP 5347 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 5348 ; 5349 ; SKX-LABEL: test_enter: 5350 ; SKX: # %bb.0: 5351 ; SKX-NEXT: #APP 5352 ; SKX-NEXT: enter $7, $4095 # imm = 0xFFF 5353 ; SKX-NEXT: # sched: [100:0.25] 5354 ; SKX-NEXT: #NO_APP 5355 ; SKX-NEXT: retq # sched: [7:1.00] 5356 ; 5357 ; BTVER2-LABEL: test_enter: 5358 ; BTVER2: # %bb.0: 5359 ; BTVER2-NEXT: #APP 5360 ; BTVER2-NEXT: enter $7, $4095 # imm = 0xFFF 5361 ; BTVER2-NEXT: # sched: [100:0.50] 5362 ; BTVER2-NEXT: #NO_APP 5363 ; BTVER2-NEXT: retq # sched: [4:1.00] 5364 ; 5365 ; ZNVER1-LABEL: test_enter: 5366 ; ZNVER1: # %bb.0: 5367 ; ZNVER1-NEXT: #APP 5368 ; ZNVER1-NEXT: enter $7, $4095 # imm = 0xFFF 5369 ; ZNVER1-NEXT: # sched: [100:0.25] 5370 ; ZNVER1-NEXT: #NO_APP 5371 ; ZNVER1-NEXT: retq # sched: [1:0.50] 5372 tail call void asm "enter $0, $1", "i,i"(i8 7, i16 4095) nounwind 5373 ret void 5374 } 5375 5376 define void @test_idiv(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) optsize { 5377 ; GENERIC-LABEL: test_idiv: 5378 ; GENERIC: # %bb.0: 5379 ; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5380 ; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5381 ; GENERIC-NEXT: #APP 5382 ; GENERIC-NEXT: idivb %dil # sched: [25:10.00] 5383 ; GENERIC-NEXT: idivb (%r8) # sched: [30:10.00] 5384 ; GENERIC-NEXT: idivw %si # sched: [25:10.00] 5385 ; GENERIC-NEXT: idivw (%r9) # sched: [30:10.00] 5386 ; GENERIC-NEXT: idivl %edx # sched: [25:10.00] 5387 ; GENERIC-NEXT: idivl (%rax) # sched: [30:10.00] 5388 ; GENERIC-NEXT: idivq %rcx # sched: [25:10.00] 5389 ; GENERIC-NEXT: idivq (%r10) # sched: [30:10.00] 5390 ; GENERIC-NEXT: #NO_APP 5391 ; GENERIC-NEXT: retq # sched: [1:1.00] 5392 ; 5393 ; ATOM-LABEL: test_idiv: 5394 ; ATOM: # %bb.0: 5395 ; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [1:1.00] 5396 ; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [1:1.00] 5397 ; ATOM-NEXT: #APP 5398 ; ATOM-NEXT: idivb %dil # sched: [62:31.00] 5399 ; ATOM-NEXT: idivb (%r8) # sched: [62:31.00] 5400 ; ATOM-NEXT: idivw %si # sched: [62:31.00] 5401 ; ATOM-NEXT: idivw (%r9) # sched: [62:31.00] 5402 ; ATOM-NEXT: idivl %edx # sched: [62:31.00] 5403 ; ATOM-NEXT: idivl (%rax) # sched: [62:31.00] 5404 ; ATOM-NEXT: idivq %rcx # sched: [130:65.00] 5405 ; ATOM-NEXT: idivq (%r10) # sched: [130:65.00] 5406 ; ATOM-NEXT: #NO_APP 5407 ; ATOM-NEXT: retq # sched: [79:39.50] 5408 ; 5409 ; SLM-LABEL: test_idiv: 5410 ; SLM: # %bb.0: 5411 ; SLM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [3:1.00] 5412 ; SLM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [3:1.00] 5413 ; SLM-NEXT: #APP 5414 ; SLM-NEXT: idivb %dil # sched: [25:25.00] 5415 ; SLM-NEXT: idivb (%r8) # sched: [29:25.00] 5416 ; SLM-NEXT: idivw %si # sched: [25:25.00] 5417 ; SLM-NEXT: idivw (%r9) # sched: [29:25.00] 5418 ; SLM-NEXT: idivl %edx # sched: [25:25.00] 5419 ; SLM-NEXT: idivl (%rax) # sched: [29:25.00] 5420 ; SLM-NEXT: idivq %rcx # sched: [25:25.00] 5421 ; SLM-NEXT: idivq (%r10) # sched: [29:25.00] 5422 ; SLM-NEXT: #NO_APP 5423 ; SLM-NEXT: retq # sched: [4:1.00] 5424 ; 5425 ; SANDY-LABEL: test_idiv: 5426 ; SANDY: # %bb.0: 5427 ; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5428 ; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5429 ; SANDY-NEXT: #APP 5430 ; SANDY-NEXT: idivb %dil # sched: [25:10.00] 5431 ; SANDY-NEXT: idivb (%r8) # sched: [30:10.00] 5432 ; SANDY-NEXT: idivw %si # sched: [25:10.00] 5433 ; SANDY-NEXT: idivw (%r9) # sched: [30:10.00] 5434 ; SANDY-NEXT: idivl %edx # sched: [25:10.00] 5435 ; SANDY-NEXT: idivl (%rax) # sched: [30:10.00] 5436 ; SANDY-NEXT: idivq %rcx # sched: [25:10.00] 5437 ; SANDY-NEXT: idivq (%r10) # sched: [30:10.00] 5438 ; SANDY-NEXT: #NO_APP 5439 ; SANDY-NEXT: retq # sched: [1:1.00] 5440 ; 5441 ; HASWELL-LABEL: test_idiv: 5442 ; HASWELL: # %bb.0: 5443 ; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5444 ; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5445 ; HASWELL-NEXT: #APP 5446 ; HASWELL-NEXT: idivb %dil # sched: [23:1.00] 5447 ; HASWELL-NEXT: idivb (%r8) # sched: [29:10.00] 5448 ; HASWELL-NEXT: idivw %si # sched: [112:16.50] 5449 ; HASWELL-NEXT: idivw (%r9) # sched: [29:10.00] 5450 ; HASWELL-NEXT: idivl %edx # sched: [112:16.50] 5451 ; HASWELL-NEXT: idivl (%rax) # sched: [29:10.00] 5452 ; HASWELL-NEXT: idivq %rcx # sched: [112:16.50] 5453 ; HASWELL-NEXT: idivq (%r10) # sched: [29:10.00] 5454 ; HASWELL-NEXT: #NO_APP 5455 ; HASWELL-NEXT: retq # sched: [7:1.00] 5456 ; 5457 ; BROADWELL-LABEL: test_idiv: 5458 ; BROADWELL: # %bb.0: 5459 ; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5460 ; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5461 ; BROADWELL-NEXT: #APP 5462 ; BROADWELL-NEXT: idivb %dil # sched: [25:10.00] 5463 ; BROADWELL-NEXT: idivb (%r8) # sched: [35:2.00] 5464 ; BROADWELL-NEXT: idivw %si # sched: [25:10.00] 5465 ; BROADWELL-NEXT: idivw (%r9) # sched: [35:2.00] 5466 ; BROADWELL-NEXT: idivl %edx # sched: [25:10.00] 5467 ; BROADWELL-NEXT: idivl (%rax) # sched: [35:2.00] 5468 ; BROADWELL-NEXT: idivq %rcx # sched: [25:10.00] 5469 ; BROADWELL-NEXT: idivq (%r10) # sched: [35:2.00] 5470 ; BROADWELL-NEXT: #NO_APP 5471 ; BROADWELL-NEXT: retq # sched: [7:1.00] 5472 ; 5473 ; SKYLAKE-LABEL: test_idiv: 5474 ; SKYLAKE: # %bb.0: 5475 ; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5476 ; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5477 ; SKYLAKE-NEXT: #APP 5478 ; SKYLAKE-NEXT: idivb %dil # sched: [25:10.00] 5479 ; SKYLAKE-NEXT: idivb (%r8) # sched: [28:4.00] 5480 ; SKYLAKE-NEXT: idivw %si # sched: [102:16.50] 5481 ; SKYLAKE-NEXT: idivw (%r9) # sched: [28:4.00] 5482 ; SKYLAKE-NEXT: idivl %edx # sched: [102:16.50] 5483 ; SKYLAKE-NEXT: idivl (%rax) # sched: [28:4.00] 5484 ; SKYLAKE-NEXT: idivq %rcx # sched: [102:16.50] 5485 ; SKYLAKE-NEXT: idivq (%r10) # sched: [28:4.00] 5486 ; SKYLAKE-NEXT: #NO_APP 5487 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 5488 ; 5489 ; SKX-LABEL: test_idiv: 5490 ; SKX: # %bb.0: 5491 ; SKX-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5492 ; SKX-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5493 ; SKX-NEXT: #APP 5494 ; SKX-NEXT: idivb %dil # sched: [25:10.00] 5495 ; SKX-NEXT: idivb (%r8) # sched: [28:4.00] 5496 ; SKX-NEXT: idivw %si # sched: [102:16.50] 5497 ; SKX-NEXT: idivw (%r9) # sched: [28:4.00] 5498 ; SKX-NEXT: idivl %edx # sched: [102:16.50] 5499 ; SKX-NEXT: idivl (%rax) # sched: [28:4.00] 5500 ; SKX-NEXT: idivq %rcx # sched: [102:16.50] 5501 ; SKX-NEXT: idivq (%r10) # sched: [28:4.00] 5502 ; SKX-NEXT: #NO_APP 5503 ; SKX-NEXT: retq # sched: [7:1.00] 5504 ; 5505 ; BTVER2-LABEL: test_idiv: 5506 ; BTVER2: # %bb.0: 5507 ; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:1.00] 5508 ; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:1.00] 5509 ; BTVER2-NEXT: #APP 5510 ; BTVER2-NEXT: idivb %dil # sched: [12:12.00] 5511 ; BTVER2-NEXT: idivb (%r8) # sched: [15:12.00] 5512 ; BTVER2-NEXT: idivw %si # sched: [17:17.00] 5513 ; BTVER2-NEXT: idivw (%r9) # sched: [20:17.00] 5514 ; BTVER2-NEXT: idivl %edx # sched: [25:25.00] 5515 ; BTVER2-NEXT: idivl (%rax) # sched: [28:25.00] 5516 ; BTVER2-NEXT: idivq %rcx # sched: [41:41.00] 5517 ; BTVER2-NEXT: idivq (%r10) # sched: [44:41.00] 5518 ; BTVER2-NEXT: #NO_APP 5519 ; BTVER2-NEXT: retq # sched: [4:1.00] 5520 ; 5521 ; ZNVER1-LABEL: test_idiv: 5522 ; ZNVER1: # %bb.0: 5523 ; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [8:0.50] 5524 ; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [8:0.50] 5525 ; ZNVER1-NEXT: #APP 5526 ; ZNVER1-NEXT: idivb %dil # sched: [15:15.00] 5527 ; ZNVER1-NEXT: idivb (%r8) # sched: [19:15.00] 5528 ; ZNVER1-NEXT: idivw %si # sched: [17:17.00] 5529 ; ZNVER1-NEXT: idivw (%r9) # sched: [21:17.00] 5530 ; ZNVER1-NEXT: idivl %edx # sched: [25:25.00] 5531 ; ZNVER1-NEXT: idivl (%rax) # sched: [29:25.00] 5532 ; ZNVER1-NEXT: idivq %rcx # sched: [41:41.00] 5533 ; ZNVER1-NEXT: idivq (%r10) # sched: [45:41.00] 5534 ; ZNVER1-NEXT: #NO_APP 5535 ; ZNVER1-NEXT: retq # sched: [1:0.50] 5536 tail call void asm "idivb $0 \0A\09 idivb $4 \0A\09 idivw $1 \0A\09 idivw $5 \0A\09 idivl $2 \0A\09 idivl $6 \0A\09 idivq $3 \0A\09 idivq $7", "r,r,r,r,*m,*m,*m,*m"(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) nounwind 5537 ret void 5538 } 5539 5540 define void @test_imul_8(i8 %a0, i8* %a1) optsize { 5541 ; GENERIC-LABEL: test_imul_8: 5542 ; GENERIC: # %bb.0: 5543 ; GENERIC-NEXT: #APP 5544 ; GENERIC-NEXT: imulb %dil # sched: [3:1.00] 5545 ; GENERIC-NEXT: imulb (%rsi) # sched: [8:1.00] 5546 ; GENERIC-NEXT: #NO_APP 5547 ; GENERIC-NEXT: retq # sched: [1:1.00] 5548 ; 5549 ; ATOM-LABEL: test_imul_8: 5550 ; ATOM: # %bb.0: 5551 ; ATOM-NEXT: #APP 5552 ; ATOM-NEXT: imulb %dil # sched: [7:3.50] 5553 ; ATOM-NEXT: imulb (%rsi) # sched: [7:3.50] 5554 ; ATOM-NEXT: #NO_APP 5555 ; ATOM-NEXT: retq # sched: [79:39.50] 5556 ; 5557 ; SLM-LABEL: test_imul_8: 5558 ; SLM: # %bb.0: 5559 ; SLM-NEXT: #APP 5560 ; SLM-NEXT: imulb %dil # sched: [3:1.00] 5561 ; SLM-NEXT: imulb (%rsi) # sched: [6:1.00] 5562 ; SLM-NEXT: #NO_APP 5563 ; SLM-NEXT: retq # sched: [4:1.00] 5564 ; 5565 ; SANDY-LABEL: test_imul_8: 5566 ; SANDY: # %bb.0: 5567 ; SANDY-NEXT: #APP 5568 ; SANDY-NEXT: imulb %dil # sched: [3:1.00] 5569 ; SANDY-NEXT: imulb (%rsi) # sched: [8:1.00] 5570 ; SANDY-NEXT: #NO_APP 5571 ; SANDY-NEXT: retq # sched: [1:1.00] 5572 ; 5573 ; HASWELL-LABEL: test_imul_8: 5574 ; HASWELL: # %bb.0: 5575 ; HASWELL-NEXT: #APP 5576 ; HASWELL-NEXT: imulb %dil # sched: [3:1.00] 5577 ; HASWELL-NEXT: imulb (%rsi) # sched: [8:1.00] 5578 ; HASWELL-NEXT: #NO_APP 5579 ; HASWELL-NEXT: retq # sched: [7:1.00] 5580 ; 5581 ; BROADWELL-LABEL: test_imul_8: 5582 ; BROADWELL: # %bb.0: 5583 ; BROADWELL-NEXT: #APP 5584 ; BROADWELL-NEXT: imulb %dil # sched: [3:1.00] 5585 ; BROADWELL-NEXT: imulb (%rsi) # sched: [8:1.00] 5586 ; BROADWELL-NEXT: #NO_APP 5587 ; BROADWELL-NEXT: retq # sched: [7:1.00] 5588 ; 5589 ; SKYLAKE-LABEL: test_imul_8: 5590 ; SKYLAKE: # %bb.0: 5591 ; SKYLAKE-NEXT: #APP 5592 ; SKYLAKE-NEXT: imulb %dil # sched: [3:1.00] 5593 ; SKYLAKE-NEXT: imulb (%rsi) # sched: [8:1.00] 5594 ; SKYLAKE-NEXT: #NO_APP 5595 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 5596 ; 5597 ; SKX-LABEL: test_imul_8: 5598 ; SKX: # %bb.0: 5599 ; SKX-NEXT: #APP 5600 ; SKX-NEXT: imulb %dil # sched: [3:1.00] 5601 ; SKX-NEXT: imulb (%rsi) # sched: [8:1.00] 5602 ; SKX-NEXT: #NO_APP 5603 ; SKX-NEXT: retq # sched: [7:1.00] 5604 ; 5605 ; BTVER2-LABEL: test_imul_8: 5606 ; BTVER2: # %bb.0: 5607 ; BTVER2-NEXT: #APP 5608 ; BTVER2-NEXT: imulb %dil # sched: [3:1.00] 5609 ; BTVER2-NEXT: imulb (%rsi) # sched: [6:1.00] 5610 ; BTVER2-NEXT: #NO_APP 5611 ; BTVER2-NEXT: retq # sched: [4:1.00] 5612 ; 5613 ; ZNVER1-LABEL: test_imul_8: 5614 ; ZNVER1: # %bb.0: 5615 ; ZNVER1-NEXT: #APP 5616 ; ZNVER1-NEXT: imulb %dil # sched: [4:1.00] 5617 ; ZNVER1-NEXT: imulb (%rsi) # sched: [8:1.00] 5618 ; ZNVER1-NEXT: #NO_APP 5619 ; ZNVER1-NEXT: retq # sched: [1:0.50] 5620 tail call void asm "imulb $0 \0A\09 imulb $1", "r,*m"(i8 %a0, i8* %a1) nounwind 5621 ret void 5622 } 5623 define void @test_imul_16(i16 %a0, i16* %a1, i16 %a2) optsize { 5624 ; GENERIC-LABEL: test_imul_16: 5625 ; GENERIC: # %bb.0: 5626 ; GENERIC-NEXT: #APP 5627 ; GENERIC-NEXT: imulw %di # sched: [4:1.33] 5628 ; GENERIC-NEXT: imulw (%rsi) # sched: [9:1.33] 5629 ; GENERIC-NEXT: imulw %dx, %di # sched: [3:1.00] 5630 ; GENERIC-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5631 ; GENERIC-NEXT: imulw $511, %di, %di # imm = 0x1FF 5632 ; GENERIC-NEXT: # sched: [4:1.00] 5633 ; GENERIC-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5634 ; GENERIC-NEXT: # sched: [8:1.00] 5635 ; GENERIC-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5636 ; GENERIC-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5637 ; GENERIC-NEXT: #NO_APP 5638 ; GENERIC-NEXT: retq # sched: [1:1.00] 5639 ; 5640 ; ATOM-LABEL: test_imul_16: 5641 ; ATOM: # %bb.0: 5642 ; ATOM-NEXT: #APP 5643 ; ATOM-NEXT: imulw %di # sched: [7:3.50] 5644 ; ATOM-NEXT: imulw (%rsi) # sched: [8:4.00] 5645 ; ATOM-NEXT: imulw %dx, %di # sched: [6:3.00] 5646 ; ATOM-NEXT: imulw (%rsi), %di # sched: [7:3.50] 5647 ; ATOM-NEXT: imulw $511, %di, %di # imm = 0x1FF 5648 ; ATOM-NEXT: # sched: [6:3.00] 5649 ; ATOM-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5650 ; ATOM-NEXT: # sched: [7:3.50] 5651 ; ATOM-NEXT: imulw $7, %di, %di # sched: [6:3.00] 5652 ; ATOM-NEXT: imulw $7, (%rsi), %di # sched: [7:3.50] 5653 ; ATOM-NEXT: #NO_APP 5654 ; ATOM-NEXT: retq # sched: [79:39.50] 5655 ; 5656 ; SLM-LABEL: test_imul_16: 5657 ; SLM: # %bb.0: 5658 ; SLM-NEXT: #APP 5659 ; SLM-NEXT: imulw %di # sched: [3:1.00] 5660 ; SLM-NEXT: imulw (%rsi) # sched: [6:1.00] 5661 ; SLM-NEXT: imulw %dx, %di # sched: [3:1.00] 5662 ; SLM-NEXT: imulw (%rsi), %di # sched: [6:1.00] 5663 ; SLM-NEXT: imulw $511, %di, %di # imm = 0x1FF 5664 ; SLM-NEXT: # sched: [3:1.00] 5665 ; SLM-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5666 ; SLM-NEXT: # sched: [6:1.00] 5667 ; SLM-NEXT: imulw $7, %di, %di # sched: [3:1.00] 5668 ; SLM-NEXT: imulw $7, (%rsi), %di # sched: [6:1.00] 5669 ; SLM-NEXT: #NO_APP 5670 ; SLM-NEXT: retq # sched: [4:1.00] 5671 ; 5672 ; SANDY-LABEL: test_imul_16: 5673 ; SANDY: # %bb.0: 5674 ; SANDY-NEXT: #APP 5675 ; SANDY-NEXT: imulw %di # sched: [4:1.33] 5676 ; SANDY-NEXT: imulw (%rsi) # sched: [9:1.33] 5677 ; SANDY-NEXT: imulw %dx, %di # sched: [3:1.00] 5678 ; SANDY-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5679 ; SANDY-NEXT: imulw $511, %di, %di # imm = 0x1FF 5680 ; SANDY-NEXT: # sched: [4:1.00] 5681 ; SANDY-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5682 ; SANDY-NEXT: # sched: [8:1.00] 5683 ; SANDY-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5684 ; SANDY-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5685 ; SANDY-NEXT: #NO_APP 5686 ; SANDY-NEXT: retq # sched: [1:1.00] 5687 ; 5688 ; HASWELL-LABEL: test_imul_16: 5689 ; HASWELL: # %bb.0: 5690 ; HASWELL-NEXT: #APP 5691 ; HASWELL-NEXT: imulw %di # sched: [4:1.00] 5692 ; HASWELL-NEXT: imulw (%rsi) # sched: [9:1.00] 5693 ; HASWELL-NEXT: imulw %dx, %di # sched: [3:1.00] 5694 ; HASWELL-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5695 ; HASWELL-NEXT: imulw $511, %di, %di # imm = 0x1FF 5696 ; HASWELL-NEXT: # sched: [4:1.00] 5697 ; HASWELL-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5698 ; HASWELL-NEXT: # sched: [8:1.00] 5699 ; HASWELL-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5700 ; HASWELL-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5701 ; HASWELL-NEXT: #NO_APP 5702 ; HASWELL-NEXT: retq # sched: [7:1.00] 5703 ; 5704 ; BROADWELL-LABEL: test_imul_16: 5705 ; BROADWELL: # %bb.0: 5706 ; BROADWELL-NEXT: #APP 5707 ; BROADWELL-NEXT: imulw %di # sched: [4:1.00] 5708 ; BROADWELL-NEXT: imulw (%rsi) # sched: [9:1.00] 5709 ; BROADWELL-NEXT: imulw %dx, %di # sched: [3:1.00] 5710 ; BROADWELL-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5711 ; BROADWELL-NEXT: imulw $511, %di, %di # imm = 0x1FF 5712 ; BROADWELL-NEXT: # sched: [4:1.00] 5713 ; BROADWELL-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5714 ; BROADWELL-NEXT: # sched: [8:1.00] 5715 ; BROADWELL-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5716 ; BROADWELL-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5717 ; BROADWELL-NEXT: #NO_APP 5718 ; BROADWELL-NEXT: retq # sched: [7:1.00] 5719 ; 5720 ; SKYLAKE-LABEL: test_imul_16: 5721 ; SKYLAKE: # %bb.0: 5722 ; SKYLAKE-NEXT: #APP 5723 ; SKYLAKE-NEXT: imulw %di # sched: [4:1.00] 5724 ; SKYLAKE-NEXT: imulw (%rsi) # sched: [9:1.00] 5725 ; SKYLAKE-NEXT: imulw %dx, %di # sched: [3:1.00] 5726 ; SKYLAKE-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5727 ; SKYLAKE-NEXT: imulw $511, %di, %di # imm = 0x1FF 5728 ; SKYLAKE-NEXT: # sched: [4:1.00] 5729 ; SKYLAKE-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5730 ; SKYLAKE-NEXT: # sched: [8:1.00] 5731 ; SKYLAKE-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5732 ; SKYLAKE-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5733 ; SKYLAKE-NEXT: #NO_APP 5734 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 5735 ; 5736 ; SKX-LABEL: test_imul_16: 5737 ; SKX: # %bb.0: 5738 ; SKX-NEXT: #APP 5739 ; SKX-NEXT: imulw %di # sched: [4:1.00] 5740 ; SKX-NEXT: imulw (%rsi) # sched: [9:1.00] 5741 ; SKX-NEXT: imulw %dx, %di # sched: [3:1.00] 5742 ; SKX-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5743 ; SKX-NEXT: imulw $511, %di, %di # imm = 0x1FF 5744 ; SKX-NEXT: # sched: [4:1.00] 5745 ; SKX-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5746 ; SKX-NEXT: # sched: [8:1.00] 5747 ; SKX-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5748 ; SKX-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5749 ; SKX-NEXT: #NO_APP 5750 ; SKX-NEXT: retq # sched: [7:1.00] 5751 ; 5752 ; BTVER2-LABEL: test_imul_16: 5753 ; BTVER2: # %bb.0: 5754 ; BTVER2-NEXT: #APP 5755 ; BTVER2-NEXT: imulw %di # sched: [3:1.00] 5756 ; BTVER2-NEXT: imulw (%rsi) # sched: [6:1.00] 5757 ; BTVER2-NEXT: imulw %dx, %di # sched: [3:1.00] 5758 ; BTVER2-NEXT: imulw (%rsi), %di # sched: [6:1.00] 5759 ; BTVER2-NEXT: imulw $511, %di, %di # imm = 0x1FF 5760 ; BTVER2-NEXT: # sched: [3:1.00] 5761 ; BTVER2-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5762 ; BTVER2-NEXT: # sched: [6:1.00] 5763 ; BTVER2-NEXT: imulw $7, %di, %di # sched: [3:1.00] 5764 ; BTVER2-NEXT: imulw $7, (%rsi), %di # sched: [6:1.00] 5765 ; BTVER2-NEXT: #NO_APP 5766 ; BTVER2-NEXT: retq # sched: [4:1.00] 5767 ; 5768 ; ZNVER1-LABEL: test_imul_16: 5769 ; ZNVER1: # %bb.0: 5770 ; ZNVER1-NEXT: #APP 5771 ; ZNVER1-NEXT: imulw %di # sched: [3:1.00] 5772 ; ZNVER1-NEXT: imulw (%rsi) # sched: [8:1.00] 5773 ; ZNVER1-NEXT: imulw %dx, %di # sched: [3:1.00] 5774 ; ZNVER1-NEXT: imulw (%rsi), %di # sched: [3:1.00] 5775 ; ZNVER1-NEXT: imulw $511, %di, %di # imm = 0x1FF 5776 ; ZNVER1-NEXT: # sched: [3:1.00] 5777 ; ZNVER1-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5778 ; ZNVER1-NEXT: # sched: [3:1.00] 5779 ; ZNVER1-NEXT: imulw $7, %di, %di # sched: [3:1.00] 5780 ; ZNVER1-NEXT: imulw $7, (%rsi), %di # sched: [3:1.00] 5781 ; ZNVER1-NEXT: #NO_APP 5782 ; ZNVER1-NEXT: retq # sched: [1:0.50] 5783 tail call void asm "imulw $0 \0A\09 imulw $2 \0A\09 imulw $1, $0 \0A\09 imulw $2, $0 \0A\09 imulw $3, $0, $0 \0A\09 imulw $3, $2, $0 \0A\09 imulw $4, $0, $0 \0A\09 imulw $4, $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 5784 ret void 5785 } 5786 define void @test_imul_32(i32 %a0, i32* %a1, i32 %a2) optsize { 5787 ; GENERIC-LABEL: test_imul_32: 5788 ; GENERIC: # %bb.0: 5789 ; GENERIC-NEXT: #APP 5790 ; GENERIC-NEXT: imull %edi # sched: [4:1.00] 5791 ; GENERIC-NEXT: imull (%rsi) # sched: [9:1.00] 5792 ; GENERIC-NEXT: imull %edx, %edi # sched: [3:1.00] 5793 ; GENERIC-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5794 ; GENERIC-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5795 ; GENERIC-NEXT: # sched: [3:1.00] 5796 ; GENERIC-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5797 ; GENERIC-NEXT: # sched: [8:1.00] 5798 ; GENERIC-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5799 ; GENERIC-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5800 ; GENERIC-NEXT: #NO_APP 5801 ; GENERIC-NEXT: retq # sched: [1:1.00] 5802 ; 5803 ; ATOM-LABEL: test_imul_32: 5804 ; ATOM: # %bb.0: 5805 ; ATOM-NEXT: #APP 5806 ; ATOM-NEXT: imull %edi # sched: [6:3.00] 5807 ; ATOM-NEXT: imull (%rsi) # sched: [7:3.50] 5808 ; ATOM-NEXT: imull %edx, %edi # sched: [5:5.00] 5809 ; ATOM-NEXT: imull (%rsi), %edi # sched: [5:5.00] 5810 ; ATOM-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5811 ; ATOM-NEXT: # sched: [5:5.00] 5812 ; ATOM-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5813 ; ATOM-NEXT: # sched: [5:5.00] 5814 ; ATOM-NEXT: imull $7, %edi, %edi # sched: [5:5.00] 5815 ; ATOM-NEXT: imull $7, (%rsi), %edi # sched: [5:5.00] 5816 ; ATOM-NEXT: #NO_APP 5817 ; ATOM-NEXT: retq # sched: [79:39.50] 5818 ; 5819 ; SLM-LABEL: test_imul_32: 5820 ; SLM: # %bb.0: 5821 ; SLM-NEXT: #APP 5822 ; SLM-NEXT: imull %edi # sched: [3:1.00] 5823 ; SLM-NEXT: imull (%rsi) # sched: [6:1.00] 5824 ; SLM-NEXT: imull %edx, %edi # sched: [3:1.00] 5825 ; SLM-NEXT: imull (%rsi), %edi # sched: [6:1.00] 5826 ; SLM-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5827 ; SLM-NEXT: # sched: [3:1.00] 5828 ; SLM-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5829 ; SLM-NEXT: # sched: [6:1.00] 5830 ; SLM-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5831 ; SLM-NEXT: imull $7, (%rsi), %edi # sched: [6:1.00] 5832 ; SLM-NEXT: #NO_APP 5833 ; SLM-NEXT: retq # sched: [4:1.00] 5834 ; 5835 ; SANDY-LABEL: test_imul_32: 5836 ; SANDY: # %bb.0: 5837 ; SANDY-NEXT: #APP 5838 ; SANDY-NEXT: imull %edi # sched: [4:1.00] 5839 ; SANDY-NEXT: imull (%rsi) # sched: [9:1.00] 5840 ; SANDY-NEXT: imull %edx, %edi # sched: [3:1.00] 5841 ; SANDY-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5842 ; SANDY-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5843 ; SANDY-NEXT: # sched: [3:1.00] 5844 ; SANDY-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5845 ; SANDY-NEXT: # sched: [8:1.00] 5846 ; SANDY-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5847 ; SANDY-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5848 ; SANDY-NEXT: #NO_APP 5849 ; SANDY-NEXT: retq # sched: [1:1.00] 5850 ; 5851 ; HASWELL-LABEL: test_imul_32: 5852 ; HASWELL: # %bb.0: 5853 ; HASWELL-NEXT: #APP 5854 ; HASWELL-NEXT: imull %edi # sched: [4:1.00] 5855 ; HASWELL-NEXT: imull (%rsi) # sched: [9:1.00] 5856 ; HASWELL-NEXT: imull %edx, %edi # sched: [3:1.00] 5857 ; HASWELL-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5858 ; HASWELL-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5859 ; HASWELL-NEXT: # sched: [3:1.00] 5860 ; HASWELL-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5861 ; HASWELL-NEXT: # sched: [8:1.00] 5862 ; HASWELL-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5863 ; HASWELL-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5864 ; HASWELL-NEXT: #NO_APP 5865 ; HASWELL-NEXT: retq # sched: [7:1.00] 5866 ; 5867 ; BROADWELL-LABEL: test_imul_32: 5868 ; BROADWELL: # %bb.0: 5869 ; BROADWELL-NEXT: #APP 5870 ; BROADWELL-NEXT: imull %edi # sched: [4:1.00] 5871 ; BROADWELL-NEXT: imull (%rsi) # sched: [9:1.00] 5872 ; BROADWELL-NEXT: imull %edx, %edi # sched: [3:1.00] 5873 ; BROADWELL-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5874 ; BROADWELL-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5875 ; BROADWELL-NEXT: # sched: [3:1.00] 5876 ; BROADWELL-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5877 ; BROADWELL-NEXT: # sched: [8:1.00] 5878 ; BROADWELL-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5879 ; BROADWELL-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5880 ; BROADWELL-NEXT: #NO_APP 5881 ; BROADWELL-NEXT: retq # sched: [7:1.00] 5882 ; 5883 ; SKYLAKE-LABEL: test_imul_32: 5884 ; SKYLAKE: # %bb.0: 5885 ; SKYLAKE-NEXT: #APP 5886 ; SKYLAKE-NEXT: imull %edi # sched: [4:1.00] 5887 ; SKYLAKE-NEXT: imull (%rsi) # sched: [9:1.00] 5888 ; SKYLAKE-NEXT: imull %edx, %edi # sched: [3:1.00] 5889 ; SKYLAKE-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5890 ; SKYLAKE-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5891 ; SKYLAKE-NEXT: # sched: [3:1.00] 5892 ; SKYLAKE-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5893 ; SKYLAKE-NEXT: # sched: [8:1.00] 5894 ; SKYLAKE-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5895 ; SKYLAKE-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5896 ; SKYLAKE-NEXT: #NO_APP 5897 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 5898 ; 5899 ; SKX-LABEL: test_imul_32: 5900 ; SKX: # %bb.0: 5901 ; SKX-NEXT: #APP 5902 ; SKX-NEXT: imull %edi # sched: [4:1.00] 5903 ; SKX-NEXT: imull (%rsi) # sched: [9:1.00] 5904 ; SKX-NEXT: imull %edx, %edi # sched: [3:1.00] 5905 ; SKX-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5906 ; SKX-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5907 ; SKX-NEXT: # sched: [3:1.00] 5908 ; SKX-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5909 ; SKX-NEXT: # sched: [8:1.00] 5910 ; SKX-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5911 ; SKX-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5912 ; SKX-NEXT: #NO_APP 5913 ; SKX-NEXT: retq # sched: [7:1.00] 5914 ; 5915 ; BTVER2-LABEL: test_imul_32: 5916 ; BTVER2: # %bb.0: 5917 ; BTVER2-NEXT: #APP 5918 ; BTVER2-NEXT: imull %edi # sched: [3:1.00] 5919 ; BTVER2-NEXT: imull (%rsi) # sched: [6:1.00] 5920 ; BTVER2-NEXT: imull %edx, %edi # sched: [3:1.00] 5921 ; BTVER2-NEXT: imull (%rsi), %edi # sched: [6:1.00] 5922 ; BTVER2-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5923 ; BTVER2-NEXT: # sched: [3:1.00] 5924 ; BTVER2-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5925 ; BTVER2-NEXT: # sched: [6:1.00] 5926 ; BTVER2-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5927 ; BTVER2-NEXT: imull $7, (%rsi), %edi # sched: [6:1.00] 5928 ; BTVER2-NEXT: #NO_APP 5929 ; BTVER2-NEXT: retq # sched: [4:1.00] 5930 ; 5931 ; ZNVER1-LABEL: test_imul_32: 5932 ; ZNVER1: # %bb.0: 5933 ; ZNVER1-NEXT: #APP 5934 ; ZNVER1-NEXT: imull %edi # sched: [3:1.00] 5935 ; ZNVER1-NEXT: imull (%rsi) # sched: [8:1.00] 5936 ; ZNVER1-NEXT: imull %edx, %edi # sched: [3:1.00] 5937 ; ZNVER1-NEXT: imull (%rsi), %edi # sched: [3:1.00] 5938 ; ZNVER1-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5939 ; ZNVER1-NEXT: # sched: [3:1.00] 5940 ; ZNVER1-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5941 ; ZNVER1-NEXT: # sched: [3:1.00] 5942 ; ZNVER1-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5943 ; ZNVER1-NEXT: imull $7, (%rsi), %edi # sched: [3:1.00] 5944 ; ZNVER1-NEXT: #NO_APP 5945 ; ZNVER1-NEXT: retq # sched: [1:0.50] 5946 tail call void asm "imull $0 \0A\09 imull $2 \0A\09 imull $1, $0 \0A\09 imull $2, $0 \0A\09 imull $3, $0, $0 \0A\09 imull $3, $2, $0 \0A\09 imull $4, $0, $0 \0A\09 imull $4, $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 5947 ret void 5948 } 5949 define void @test_imul_64(i64 %a0, i64* %a1, i64 %a2) optsize { 5950 ; GENERIC-LABEL: test_imul_64: 5951 ; GENERIC: # %bb.0: 5952 ; GENERIC-NEXT: #APP 5953 ; GENERIC-NEXT: imulq %rdi # sched: [4:1.00] 5954 ; GENERIC-NEXT: imulq (%rsi) # sched: [9:1.00] 5955 ; GENERIC-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 5956 ; GENERIC-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 5957 ; GENERIC-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 5958 ; GENERIC-NEXT: # sched: [3:1.00] 5959 ; GENERIC-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 5960 ; GENERIC-NEXT: # sched: [8:1.00] 5961 ; GENERIC-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 5962 ; GENERIC-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 5963 ; GENERIC-NEXT: #NO_APP 5964 ; GENERIC-NEXT: retq # sched: [1:1.00] 5965 ; 5966 ; ATOM-LABEL: test_imul_64: 5967 ; ATOM: # %bb.0: 5968 ; ATOM-NEXT: #APP 5969 ; ATOM-NEXT: imulq %rdi # sched: [12:6.00] 5970 ; ATOM-NEXT: imulq (%rsi) # sched: [12:6.00] 5971 ; ATOM-NEXT: imulq %rdx, %rdi # sched: [12:6.00] 5972 ; ATOM-NEXT: imulq (%rsi), %rdi # sched: [12:6.00] 5973 ; ATOM-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 5974 ; ATOM-NEXT: # sched: [14:7.00] 5975 ; ATOM-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 5976 ; ATOM-NEXT: # sched: [14:7.00] 5977 ; ATOM-NEXT: imulq $7, %rdi, %rdi # sched: [14:7.00] 5978 ; ATOM-NEXT: imulq $7, (%rsi), %rdi # sched: [14:7.00] 5979 ; ATOM-NEXT: #NO_APP 5980 ; ATOM-NEXT: retq # sched: [79:39.50] 5981 ; 5982 ; SLM-LABEL: test_imul_64: 5983 ; SLM: # %bb.0: 5984 ; SLM-NEXT: #APP 5985 ; SLM-NEXT: imulq %rdi # sched: [3:1.00] 5986 ; SLM-NEXT: imulq (%rsi) # sched: [6:1.00] 5987 ; SLM-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 5988 ; SLM-NEXT: imulq (%rsi), %rdi # sched: [6:1.00] 5989 ; SLM-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 5990 ; SLM-NEXT: # sched: [3:1.00] 5991 ; SLM-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 5992 ; SLM-NEXT: # sched: [6:1.00] 5993 ; SLM-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 5994 ; SLM-NEXT: imulq $7, (%rsi), %rdi # sched: [6:1.00] 5995 ; SLM-NEXT: #NO_APP 5996 ; SLM-NEXT: retq # sched: [4:1.00] 5997 ; 5998 ; SANDY-LABEL: test_imul_64: 5999 ; SANDY: # %bb.0: 6000 ; SANDY-NEXT: #APP 6001 ; SANDY-NEXT: imulq %rdi # sched: [4:1.00] 6002 ; SANDY-NEXT: imulq (%rsi) # sched: [9:1.00] 6003 ; SANDY-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 6004 ; SANDY-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 6005 ; SANDY-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6006 ; SANDY-NEXT: # sched: [3:1.00] 6007 ; SANDY-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6008 ; SANDY-NEXT: # sched: [8:1.00] 6009 ; SANDY-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 6010 ; SANDY-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 6011 ; SANDY-NEXT: #NO_APP 6012 ; SANDY-NEXT: retq # sched: [1:1.00] 6013 ; 6014 ; HASWELL-LABEL: test_imul_64: 6015 ; HASWELL: # %bb.0: 6016 ; HASWELL-NEXT: #APP 6017 ; HASWELL-NEXT: imulq %rdi # sched: [4:1.00] 6018 ; HASWELL-NEXT: imulq (%rsi) # sched: [9:1.00] 6019 ; HASWELL-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 6020 ; HASWELL-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 6021 ; HASWELL-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6022 ; HASWELL-NEXT: # sched: [3:1.00] 6023 ; HASWELL-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6024 ; HASWELL-NEXT: # sched: [8:1.00] 6025 ; HASWELL-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 6026 ; HASWELL-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 6027 ; HASWELL-NEXT: #NO_APP 6028 ; HASWELL-NEXT: retq # sched: [7:1.00] 6029 ; 6030 ; BROADWELL-LABEL: test_imul_64: 6031 ; BROADWELL: # %bb.0: 6032 ; BROADWELL-NEXT: #APP 6033 ; BROADWELL-NEXT: imulq %rdi # sched: [4:1.00] 6034 ; BROADWELL-NEXT: imulq (%rsi) # sched: [9:1.00] 6035 ; BROADWELL-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 6036 ; BROADWELL-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 6037 ; BROADWELL-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6038 ; BROADWELL-NEXT: # sched: [3:1.00] 6039 ; BROADWELL-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6040 ; BROADWELL-NEXT: # sched: [8:1.00] 6041 ; BROADWELL-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 6042 ; BROADWELL-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 6043 ; BROADWELL-NEXT: #NO_APP 6044 ; BROADWELL-NEXT: retq # sched: [7:1.00] 6045 ; 6046 ; SKYLAKE-LABEL: test_imul_64: 6047 ; SKYLAKE: # %bb.0: 6048 ; SKYLAKE-NEXT: #APP 6049 ; SKYLAKE-NEXT: imulq %rdi # sched: [4:1.00] 6050 ; SKYLAKE-NEXT: imulq (%rsi) # sched: [9:1.00] 6051 ; SKYLAKE-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 6052 ; SKYLAKE-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 6053 ; SKYLAKE-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6054 ; SKYLAKE-NEXT: # sched: [3:1.00] 6055 ; SKYLAKE-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6056 ; SKYLAKE-NEXT: # sched: [8:1.00] 6057 ; SKYLAKE-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 6058 ; SKYLAKE-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 6059 ; SKYLAKE-NEXT: #NO_APP 6060 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 6061 ; 6062 ; SKX-LABEL: test_imul_64: 6063 ; SKX: # %bb.0: 6064 ; SKX-NEXT: #APP 6065 ; SKX-NEXT: imulq %rdi # sched: [4:1.00] 6066 ; SKX-NEXT: imulq (%rsi) # sched: [9:1.00] 6067 ; SKX-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 6068 ; SKX-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 6069 ; SKX-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6070 ; SKX-NEXT: # sched: [3:1.00] 6071 ; SKX-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6072 ; SKX-NEXT: # sched: [8:1.00] 6073 ; SKX-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 6074 ; SKX-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 6075 ; SKX-NEXT: #NO_APP 6076 ; SKX-NEXT: retq # sched: [7:1.00] 6077 ; 6078 ; BTVER2-LABEL: test_imul_64: 6079 ; BTVER2: # %bb.0: 6080 ; BTVER2-NEXT: #APP 6081 ; BTVER2-NEXT: imulq %rdi # sched: [6:4.00] 6082 ; BTVER2-NEXT: imulq (%rsi) # sched: [9:4.00] 6083 ; BTVER2-NEXT: imulq %rdx, %rdi # sched: [6:4.00] 6084 ; BTVER2-NEXT: imulq (%rsi), %rdi # sched: [9:4.00] 6085 ; BTVER2-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6086 ; BTVER2-NEXT: # sched: [6:4.00] 6087 ; BTVER2-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6088 ; BTVER2-NEXT: # sched: [9:4.00] 6089 ; BTVER2-NEXT: imulq $7, %rdi, %rdi # sched: [6:4.00] 6090 ; BTVER2-NEXT: imulq $7, (%rsi), %rdi # sched: [9:4.00] 6091 ; BTVER2-NEXT: #NO_APP 6092 ; BTVER2-NEXT: retq # sched: [4:1.00] 6093 ; 6094 ; ZNVER1-LABEL: test_imul_64: 6095 ; ZNVER1: # %bb.0: 6096 ; ZNVER1-NEXT: #APP 6097 ; ZNVER1-NEXT: imulq %rdi # sched: [4:1.00] 6098 ; ZNVER1-NEXT: imulq (%rsi) # sched: [9:1.00] 6099 ; ZNVER1-NEXT: imulq %rdx, %rdi # sched: [4:1.00] 6100 ; ZNVER1-NEXT: imulq (%rsi), %rdi # sched: [4:1.00] 6101 ; ZNVER1-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6102 ; ZNVER1-NEXT: # sched: [4:1.00] 6103 ; ZNVER1-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6104 ; ZNVER1-NEXT: # sched: [4:1.00] 6105 ; ZNVER1-NEXT: imulq $7, %rdi, %rdi # sched: [4:1.00] 6106 ; ZNVER1-NEXT: imulq $7, (%rsi), %rdi # sched: [4:1.00] 6107 ; ZNVER1-NEXT: #NO_APP 6108 ; ZNVER1-NEXT: retq # sched: [1:0.50] 6109 tail call void asm "imulq $0 \0A\09 imulq $2 \0A\09 imulq $1, $0 \0A\09 imulq $2, $0 \0A\09 imulq $3, $0, $0 \0A\09 imulq $3, $2, $0 \0A\09 imulq $4, $0, $0 \0A\09 imulq $4, $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 6110 ret void 6111 } 6112 6113 define void @test_in() optsize { 6114 ; GENERIC-LABEL: test_in: 6115 ; GENERIC: # %bb.0: 6116 ; GENERIC-NEXT: #APP 6117 ; GENERIC-NEXT: inb $7, %al # sched: [100:0.33] 6118 ; GENERIC-NEXT: inw $7, %ax # sched: [100:0.33] 6119 ; GENERIC-NEXT: inl $7, %eax # sched: [100:0.33] 6120 ; GENERIC-NEXT: inb %dx, %al # sched: [100:0.33] 6121 ; GENERIC-NEXT: inw %dx, %ax # sched: [100:0.33] 6122 ; GENERIC-NEXT: inl %dx, %eax # sched: [100:0.33] 6123 ; GENERIC-NEXT: #NO_APP 6124 ; GENERIC-NEXT: retq # sched: [1:1.00] 6125 ; 6126 ; ATOM-LABEL: test_in: 6127 ; ATOM: # %bb.0: 6128 ; ATOM-NEXT: #APP 6129 ; ATOM-NEXT: inb $7, %al # sched: [92:46.00] 6130 ; ATOM-NEXT: inw $7, %ax # sched: [92:46.00] 6131 ; ATOM-NEXT: inl $7, %eax # sched: [92:46.00] 6132 ; ATOM-NEXT: inb %dx, %al # sched: [94:47.00] 6133 ; ATOM-NEXT: inw %dx, %ax # sched: [94:47.00] 6134 ; ATOM-NEXT: inl %dx, %eax # sched: [94:47.00] 6135 ; ATOM-NEXT: #NO_APP 6136 ; ATOM-NEXT: retq # sched: [79:39.50] 6137 ; 6138 ; SLM-LABEL: test_in: 6139 ; SLM: # %bb.0: 6140 ; SLM-NEXT: #APP 6141 ; SLM-NEXT: inb $7, %al # sched: [100:1.00] 6142 ; SLM-NEXT: inw $7, %ax # sched: [100:1.00] 6143 ; SLM-NEXT: inl $7, %eax # sched: [100:1.00] 6144 ; SLM-NEXT: inb %dx, %al # sched: [100:1.00] 6145 ; SLM-NEXT: inw %dx, %ax # sched: [100:1.00] 6146 ; SLM-NEXT: inl %dx, %eax # sched: [100:1.00] 6147 ; SLM-NEXT: #NO_APP 6148 ; SLM-NEXT: retq # sched: [4:1.00] 6149 ; 6150 ; SANDY-LABEL: test_in: 6151 ; SANDY: # %bb.0: 6152 ; SANDY-NEXT: #APP 6153 ; SANDY-NEXT: inb $7, %al # sched: [100:0.33] 6154 ; SANDY-NEXT: inw $7, %ax # sched: [100:0.33] 6155 ; SANDY-NEXT: inl $7, %eax # sched: [100:0.33] 6156 ; SANDY-NEXT: inb %dx, %al # sched: [100:0.33] 6157 ; SANDY-NEXT: inw %dx, %ax # sched: [100:0.33] 6158 ; SANDY-NEXT: inl %dx, %eax # sched: [100:0.33] 6159 ; SANDY-NEXT: #NO_APP 6160 ; SANDY-NEXT: retq # sched: [1:1.00] 6161 ; 6162 ; HASWELL-LABEL: test_in: 6163 ; HASWELL: # %bb.0: 6164 ; HASWELL-NEXT: #APP 6165 ; HASWELL-NEXT: inb $7, %al # sched: [35:5.00] 6166 ; HASWELL-NEXT: inw $7, %ax # sched: [35:5.00] 6167 ; HASWELL-NEXT: inl $7, %eax # sched: [35:5.00] 6168 ; HASWELL-NEXT: inb %dx, %al # sched: [35:5.00] 6169 ; HASWELL-NEXT: inw %dx, %ax # sched: [35:5.00] 6170 ; HASWELL-NEXT: inl %dx, %eax # sched: [35:5.00] 6171 ; HASWELL-NEXT: #NO_APP 6172 ; HASWELL-NEXT: retq # sched: [7:1.00] 6173 ; 6174 ; BROADWELL-LABEL: test_in: 6175 ; BROADWELL: # %bb.0: 6176 ; BROADWELL-NEXT: #APP 6177 ; BROADWELL-NEXT: inb $7, %al # sched: [34:5.00] 6178 ; BROADWELL-NEXT: inw $7, %ax # sched: [34:5.00] 6179 ; BROADWELL-NEXT: inl $7, %eax # sched: [34:5.00] 6180 ; BROADWELL-NEXT: inb %dx, %al # sched: [34:5.00] 6181 ; BROADWELL-NEXT: inw %dx, %ax # sched: [34:5.00] 6182 ; BROADWELL-NEXT: inl %dx, %eax # sched: [34:5.00] 6183 ; BROADWELL-NEXT: #NO_APP 6184 ; BROADWELL-NEXT: retq # sched: [7:1.00] 6185 ; 6186 ; SKYLAKE-LABEL: test_in: 6187 ; SKYLAKE: # %bb.0: 6188 ; SKYLAKE-NEXT: #APP 6189 ; SKYLAKE-NEXT: inb $7, %al # sched: [35:5.00] 6190 ; SKYLAKE-NEXT: inw $7, %ax # sched: [35:5.00] 6191 ; SKYLAKE-NEXT: inl $7, %eax # sched: [35:5.00] 6192 ; SKYLAKE-NEXT: inb %dx, %al # sched: [35:5.00] 6193 ; SKYLAKE-NEXT: inw %dx, %ax # sched: [35:5.00] 6194 ; SKYLAKE-NEXT: inl %dx, %eax # sched: [35:5.00] 6195 ; SKYLAKE-NEXT: #NO_APP 6196 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 6197 ; 6198 ; SKX-LABEL: test_in: 6199 ; SKX: # %bb.0: 6200 ; SKX-NEXT: #APP 6201 ; SKX-NEXT: inb $7, %al # sched: [35:5.00] 6202 ; SKX-NEXT: inw $7, %ax # sched: [35:5.00] 6203 ; SKX-NEXT: inl $7, %eax # sched: [35:5.00] 6204 ; SKX-NEXT: inb %dx, %al # sched: [35:5.00] 6205 ; SKX-NEXT: inw %dx, %ax # sched: [35:5.00] 6206 ; SKX-NEXT: inl %dx, %eax # sched: [35:5.00] 6207 ; SKX-NEXT: #NO_APP 6208 ; SKX-NEXT: retq # sched: [7:1.00] 6209 ; 6210 ; BTVER2-LABEL: test_in: 6211 ; BTVER2: # %bb.0: 6212 ; BTVER2-NEXT: #APP 6213 ; BTVER2-NEXT: inb $7, %al # sched: [100:0.50] 6214 ; BTVER2-NEXT: inw $7, %ax # sched: [100:0.50] 6215 ; BTVER2-NEXT: inl $7, %eax # sched: [100:0.50] 6216 ; BTVER2-NEXT: inb %dx, %al # sched: [100:0.50] 6217 ; BTVER2-NEXT: inw %dx, %ax # sched: [100:0.50] 6218 ; BTVER2-NEXT: inl %dx, %eax # sched: [100:0.50] 6219 ; BTVER2-NEXT: #NO_APP 6220 ; BTVER2-NEXT: retq # sched: [4:1.00] 6221 ; 6222 ; ZNVER1-LABEL: test_in: 6223 ; ZNVER1: # %bb.0: 6224 ; ZNVER1-NEXT: #APP 6225 ; ZNVER1-NEXT: inb $7, %al # sched: [100:0.25] 6226 ; ZNVER1-NEXT: inw $7, %ax # sched: [100:0.25] 6227 ; ZNVER1-NEXT: inl $7, %eax # sched: [100:0.25] 6228 ; ZNVER1-NEXT: inb %dx, %al # sched: [100:0.25] 6229 ; ZNVER1-NEXT: inw %dx, %ax # sched: [100:0.25] 6230 ; ZNVER1-NEXT: inl %dx, %eax # sched: [100:0.25] 6231 ; ZNVER1-NEXT: #NO_APP 6232 ; ZNVER1-NEXT: retq # sched: [1:0.50] 6233 tail call void asm "inb $0, %AL \0A\09 inw $0, %AX \0A\09 inl $0, %EAX \0A\09 inb %DX, %AL \0A\09 inw %DX, %AX \0A\09 inl %DX, %EAX", "i"(i8 7) nounwind 6234 ret void 6235 } 6236 6237 define void @test_inc8(i8 %a0, i8* %a1) optsize { 6238 ; GENERIC-LABEL: test_inc8: 6239 ; GENERIC: # %bb.0: 6240 ; GENERIC-NEXT: #APP 6241 ; GENERIC-NEXT: incb %dil # sched: [1:0.33] 6242 ; GENERIC-NEXT: incb (%rsi) # sched: [7:1.00] 6243 ; GENERIC-NEXT: #NO_APP 6244 ; GENERIC-NEXT: retq # sched: [1:1.00] 6245 ; 6246 ; ATOM-LABEL: test_inc8: 6247 ; ATOM: # %bb.0: 6248 ; ATOM-NEXT: #APP 6249 ; ATOM-NEXT: incb %dil # sched: [1:0.50] 6250 ; ATOM-NEXT: incb (%rsi) # sched: [1:1.00] 6251 ; ATOM-NEXT: #NO_APP 6252 ; ATOM-NEXT: retq # sched: [79:39.50] 6253 ; 6254 ; SLM-LABEL: test_inc8: 6255 ; SLM: # %bb.0: 6256 ; SLM-NEXT: #APP 6257 ; SLM-NEXT: incb %dil # sched: [1:0.50] 6258 ; SLM-NEXT: incb (%rsi) # sched: [5:2.00] 6259 ; SLM-NEXT: #NO_APP 6260 ; SLM-NEXT: retq # sched: [4:1.00] 6261 ; 6262 ; SANDY-LABEL: test_inc8: 6263 ; SANDY: # %bb.0: 6264 ; SANDY-NEXT: #APP 6265 ; SANDY-NEXT: incb %dil # sched: [1:0.33] 6266 ; SANDY-NEXT: incb (%rsi) # sched: [7:1.00] 6267 ; SANDY-NEXT: #NO_APP 6268 ; SANDY-NEXT: retq # sched: [1:1.00] 6269 ; 6270 ; HASWELL-LABEL: test_inc8: 6271 ; HASWELL: # %bb.0: 6272 ; HASWELL-NEXT: #APP 6273 ; HASWELL-NEXT: incb %dil # sched: [1:0.25] 6274 ; HASWELL-NEXT: incb (%rsi) # sched: [7:1.00] 6275 ; HASWELL-NEXT: #NO_APP 6276 ; HASWELL-NEXT: retq # sched: [7:1.00] 6277 ; 6278 ; BROADWELL-LABEL: test_inc8: 6279 ; BROADWELL: # %bb.0: 6280 ; BROADWELL-NEXT: #APP 6281 ; BROADWELL-NEXT: incb %dil # sched: [1:0.25] 6282 ; BROADWELL-NEXT: incb (%rsi) # sched: [7:1.00] 6283 ; BROADWELL-NEXT: #NO_APP 6284 ; BROADWELL-NEXT: retq # sched: [7:1.00] 6285 ; 6286 ; SKYLAKE-LABEL: test_inc8: 6287 ; SKYLAKE: # %bb.0: 6288 ; SKYLAKE-NEXT: #APP 6289 ; SKYLAKE-NEXT: incb %dil # sched: [1:0.25] 6290 ; SKYLAKE-NEXT: incb (%rsi) # sched: [7:1.00] 6291 ; SKYLAKE-NEXT: #NO_APP 6292 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 6293 ; 6294 ; SKX-LABEL: test_inc8: 6295 ; SKX: # %bb.0: 6296 ; SKX-NEXT: #APP 6297 ; SKX-NEXT: incb %dil # sched: [1:0.25] 6298 ; SKX-NEXT: incb (%rsi) # sched: [7:1.00] 6299 ; SKX-NEXT: #NO_APP 6300 ; SKX-NEXT: retq # sched: [7:1.00] 6301 ; 6302 ; BTVER2-LABEL: test_inc8: 6303 ; BTVER2: # %bb.0: 6304 ; BTVER2-NEXT: #APP 6305 ; BTVER2-NEXT: incb %dil # sched: [1:0.50] 6306 ; BTVER2-NEXT: incb (%rsi) # sched: [5:1.00] 6307 ; BTVER2-NEXT: #NO_APP 6308 ; BTVER2-NEXT: retq # sched: [4:1.00] 6309 ; 6310 ; ZNVER1-LABEL: test_inc8: 6311 ; ZNVER1: # %bb.0: 6312 ; ZNVER1-NEXT: #APP 6313 ; ZNVER1-NEXT: incb %dil # sched: [1:0.25] 6314 ; ZNVER1-NEXT: incb (%rsi) # sched: [5:0.50] 6315 ; ZNVER1-NEXT: #NO_APP 6316 ; ZNVER1-NEXT: retq # sched: [1:0.50] 6317 tail call void asm "incb $0 \0A\09 incb $1", "r,*m"(i8 %a0, i8* %a1) nounwind 6318 ret void 6319 } 6320 define void @test_inc16(i16 %a0, i16* %a1) optsize { 6321 ; GENERIC-LABEL: test_inc16: 6322 ; GENERIC: # %bb.0: 6323 ; GENERIC-NEXT: #APP 6324 ; GENERIC-NEXT: incw %di # sched: [1:0.33] 6325 ; GENERIC-NEXT: incw (%rsi) # sched: [7:1.00] 6326 ; GENERIC-NEXT: #NO_APP 6327 ; GENERIC-NEXT: retq # sched: [1:1.00] 6328 ; 6329 ; ATOM-LABEL: test_inc16: 6330 ; ATOM: # %bb.0: 6331 ; ATOM-NEXT: #APP 6332 ; ATOM-NEXT: incw %di # sched: [1:0.50] 6333 ; ATOM-NEXT: incw (%rsi) # sched: [1:1.00] 6334 ; ATOM-NEXT: #NO_APP 6335 ; ATOM-NEXT: retq # sched: [79:39.50] 6336 ; 6337 ; SLM-LABEL: test_inc16: 6338 ; SLM: # %bb.0: 6339 ; SLM-NEXT: #APP 6340 ; SLM-NEXT: incw %di # sched: [1:0.50] 6341 ; SLM-NEXT: incw (%rsi) # sched: [5:2.00] 6342 ; SLM-NEXT: #NO_APP 6343 ; SLM-NEXT: retq # sched: [4:1.00] 6344 ; 6345 ; SANDY-LABEL: test_inc16: 6346 ; SANDY: # %bb.0: 6347 ; SANDY-NEXT: #APP 6348 ; SANDY-NEXT: incw %di # sched: [1:0.33] 6349 ; SANDY-NEXT: incw (%rsi) # sched: [7:1.00] 6350 ; SANDY-NEXT: #NO_APP 6351 ; SANDY-NEXT: retq # sched: [1:1.00] 6352 ; 6353 ; HASWELL-LABEL: test_inc16: 6354 ; HASWELL: # %bb.0: 6355 ; HASWELL-NEXT: #APP 6356 ; HASWELL-NEXT: incw %di # sched: [1:0.25] 6357 ; HASWELL-NEXT: incw (%rsi) # sched: [7:1.00] 6358 ; HASWELL-NEXT: #NO_APP 6359 ; HASWELL-NEXT: retq # sched: [7:1.00] 6360 ; 6361 ; BROADWELL-LABEL: test_inc16: 6362 ; BROADWELL: # %bb.0: 6363 ; BROADWELL-NEXT: #APP 6364 ; BROADWELL-NEXT: incw %di # sched: [1:0.25] 6365 ; BROADWELL-NEXT: incw (%rsi) # sched: [7:1.00] 6366 ; BROADWELL-NEXT: #NO_APP 6367 ; BROADWELL-NEXT: retq # sched: [7:1.00] 6368 ; 6369 ; SKYLAKE-LABEL: test_inc16: 6370 ; SKYLAKE: # %bb.0: 6371 ; SKYLAKE-NEXT: #APP 6372 ; SKYLAKE-NEXT: incw %di # sched: [1:0.25] 6373 ; SKYLAKE-NEXT: incw (%rsi) # sched: [7:1.00] 6374 ; SKYLAKE-NEXT: #NO_APP 6375 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 6376 ; 6377 ; SKX-LABEL: test_inc16: 6378 ; SKX: # %bb.0: 6379 ; SKX-NEXT: #APP 6380 ; SKX-NEXT: incw %di # sched: [1:0.25] 6381 ; SKX-NEXT: incw (%rsi) # sched: [7:1.00] 6382 ; SKX-NEXT: #NO_APP 6383 ; SKX-NEXT: retq # sched: [7:1.00] 6384 ; 6385 ; BTVER2-LABEL: test_inc16: 6386 ; BTVER2: # %bb.0: 6387 ; BTVER2-NEXT: #APP 6388 ; BTVER2-NEXT: incw %di # sched: [1:0.50] 6389 ; BTVER2-NEXT: incw (%rsi) # sched: [5:1.00] 6390 ; BTVER2-NEXT: #NO_APP 6391 ; BTVER2-NEXT: retq # sched: [4:1.00] 6392 ; 6393 ; ZNVER1-LABEL: test_inc16: 6394 ; ZNVER1: # %bb.0: 6395 ; ZNVER1-NEXT: #APP 6396 ; ZNVER1-NEXT: incw %di # sched: [1:0.25] 6397 ; ZNVER1-NEXT: incw (%rsi) # sched: [5:0.50] 6398 ; ZNVER1-NEXT: #NO_APP 6399 ; ZNVER1-NEXT: retq # sched: [1:0.50] 6400 tail call void asm "incw $0 \0A\09 incw $1", "r,*m"(i16 %a0, i16* %a1) nounwind 6401 ret void 6402 } 6403 define void @test_inc32(i32 %a0, i32* %a1) optsize { 6404 ; GENERIC-LABEL: test_inc32: 6405 ; GENERIC: # %bb.0: 6406 ; GENERIC-NEXT: #APP 6407 ; GENERIC-NEXT: incl %edi # sched: [1:0.33] 6408 ; GENERIC-NEXT: incl (%rsi) # sched: [7:1.00] 6409 ; GENERIC-NEXT: #NO_APP 6410 ; GENERIC-NEXT: retq # sched: [1:1.00] 6411 ; 6412 ; ATOM-LABEL: test_inc32: 6413 ; ATOM: # %bb.0: 6414 ; ATOM-NEXT: #APP 6415 ; ATOM-NEXT: incl %edi # sched: [1:0.50] 6416 ; ATOM-NEXT: incl (%rsi) # sched: [1:1.00] 6417 ; ATOM-NEXT: #NO_APP 6418 ; ATOM-NEXT: retq # sched: [79:39.50] 6419 ; 6420 ; SLM-LABEL: test_inc32: 6421 ; SLM: # %bb.0: 6422 ; SLM-NEXT: #APP 6423 ; SLM-NEXT: incl %edi # sched: [1:0.50] 6424 ; SLM-NEXT: incl (%rsi) # sched: [5:2.00] 6425 ; SLM-NEXT: #NO_APP 6426 ; SLM-NEXT: retq # sched: [4:1.00] 6427 ; 6428 ; SANDY-LABEL: test_inc32: 6429 ; SANDY: # %bb.0: 6430 ; SANDY-NEXT: #APP 6431 ; SANDY-NEXT: incl %edi # sched: [1:0.33] 6432 ; SANDY-NEXT: incl (%rsi) # sched: [7:1.00] 6433 ; SANDY-NEXT: #NO_APP 6434 ; SANDY-NEXT: retq # sched: [1:1.00] 6435 ; 6436 ; HASWELL-LABEL: test_inc32: 6437 ; HASWELL: # %bb.0: 6438 ; HASWELL-NEXT: #APP 6439 ; HASWELL-NEXT: incl %edi # sched: [1:0.25] 6440 ; HASWELL-NEXT: incl (%rsi) # sched: [7:1.00] 6441 ; HASWELL-NEXT: #NO_APP 6442 ; HASWELL-NEXT: retq # sched: [7:1.00] 6443 ; 6444 ; BROADWELL-LABEL: test_inc32: 6445 ; BROADWELL: # %bb.0: 6446 ; BROADWELL-NEXT: #APP 6447 ; BROADWELL-NEXT: incl %edi # sched: [1:0.25] 6448 ; BROADWELL-NEXT: incl (%rsi) # sched: [7:1.00] 6449 ; BROADWELL-NEXT: #NO_APP 6450 ; BROADWELL-NEXT: retq # sched: [7:1.00] 6451 ; 6452 ; SKYLAKE-LABEL: test_inc32: 6453 ; SKYLAKE: # %bb.0: 6454 ; SKYLAKE-NEXT: #APP 6455 ; SKYLAKE-NEXT: incl %edi # sched: [1:0.25] 6456 ; SKYLAKE-NEXT: incl (%rsi) # sched: [7:1.00] 6457 ; SKYLAKE-NEXT: #NO_APP 6458 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 6459 ; 6460 ; SKX-LABEL: test_inc32: 6461 ; SKX: # %bb.0: 6462 ; SKX-NEXT: #APP 6463 ; SKX-NEXT: incl %edi # sched: [1:0.25] 6464 ; SKX-NEXT: incl (%rsi) # sched: [7:1.00] 6465 ; SKX-NEXT: #NO_APP 6466 ; SKX-NEXT: retq # sched: [7:1.00] 6467 ; 6468 ; BTVER2-LABEL: test_inc32: 6469 ; BTVER2: # %bb.0: 6470 ; BTVER2-NEXT: #APP 6471 ; BTVER2-NEXT: incl %edi # sched: [1:0.50] 6472 ; BTVER2-NEXT: incl (%rsi) # sched: [5:1.00] 6473 ; BTVER2-NEXT: #NO_APP 6474 ; BTVER2-NEXT: retq # sched: [4:1.00] 6475 ; 6476 ; ZNVER1-LABEL: test_inc32: 6477 ; ZNVER1: # %bb.0: 6478 ; ZNVER1-NEXT: #APP 6479 ; ZNVER1-NEXT: incl %edi # sched: [1:0.25] 6480 ; ZNVER1-NEXT: incl (%rsi) # sched: [5:0.50] 6481 ; ZNVER1-NEXT: #NO_APP 6482 ; ZNVER1-NEXT: retq # sched: [1:0.50] 6483 tail call void asm "incl $0 \0A\09 incl $1", "r,*m"(i32 %a0, i32* %a1) nounwind 6484 ret void 6485 } 6486 define void @test_inc64(i64 %a0, i64* %a1) optsize { 6487 ; GENERIC-LABEL: test_inc64: 6488 ; GENERIC: # %bb.0: 6489 ; GENERIC-NEXT: #APP 6490 ; GENERIC-NEXT: incq %rdi # sched: [1:0.33] 6491 ; GENERIC-NEXT: incq (%rsi) # sched: [7:1.00] 6492 ; GENERIC-NEXT: #NO_APP 6493 ; GENERIC-NEXT: retq # sched: [1:1.00] 6494 ; 6495 ; ATOM-LABEL: test_inc64: 6496 ; ATOM: # %bb.0: 6497 ; ATOM-NEXT: #APP 6498 ; ATOM-NEXT: incq %rdi # sched: [1:0.50] 6499 ; ATOM-NEXT: incq (%rsi) # sched: [1:1.00] 6500 ; ATOM-NEXT: #NO_APP 6501 ; ATOM-NEXT: retq # sched: [79:39.50] 6502 ; 6503 ; SLM-LABEL: test_inc64: 6504 ; SLM: # %bb.0: 6505 ; SLM-NEXT: #APP 6506 ; SLM-NEXT: incq %rdi # sched: [1:0.50] 6507 ; SLM-NEXT: incq (%rsi) # sched: [5:2.00] 6508 ; SLM-NEXT: #NO_APP 6509 ; SLM-NEXT: retq # sched: [4:1.00] 6510 ; 6511 ; SANDY-LABEL: test_inc64: 6512 ; SANDY: # %bb.0: 6513 ; SANDY-NEXT: #APP 6514 ; SANDY-NEXT: incq %rdi # sched: [1:0.33] 6515 ; SANDY-NEXT: incq (%rsi) # sched: [7:1.00] 6516 ; SANDY-NEXT: #NO_APP 6517 ; SANDY-NEXT: retq # sched: [1:1.00] 6518 ; 6519 ; HASWELL-LABEL: test_inc64: 6520 ; HASWELL: # %bb.0: 6521 ; HASWELL-NEXT: #APP 6522 ; HASWELL-NEXT: incq %rdi # sched: [1:0.25] 6523 ; HASWELL-NEXT: incq (%rsi) # sched: [7:1.00] 6524 ; HASWELL-NEXT: #NO_APP 6525 ; HASWELL-NEXT: retq # sched: [7:1.00] 6526 ; 6527 ; BROADWELL-LABEL: test_inc64: 6528 ; BROADWELL: # %bb.0: 6529 ; BROADWELL-NEXT: #APP 6530 ; BROADWELL-NEXT: incq %rdi # sched: [1:0.25] 6531 ; BROADWELL-NEXT: incq (%rsi) # sched: [7:1.00] 6532 ; BROADWELL-NEXT: #NO_APP 6533 ; BROADWELL-NEXT: retq # sched: [7:1.00] 6534 ; 6535 ; SKYLAKE-LABEL: test_inc64: 6536 ; SKYLAKE: # %bb.0: 6537 ; SKYLAKE-NEXT: #APP 6538 ; SKYLAKE-NEXT: incq %rdi # sched: [1:0.25] 6539 ; SKYLAKE-NEXT: incq (%rsi) # sched: [7:1.00] 6540 ; SKYLAKE-NEXT: #NO_APP 6541 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 6542 ; 6543 ; SKX-LABEL: test_inc64: 6544 ; SKX: # %bb.0: 6545 ; SKX-NEXT: #APP 6546 ; SKX-NEXT: incq %rdi # sched: [1:0.25] 6547 ; SKX-NEXT: incq (%rsi) # sched: [7:1.00] 6548 ; SKX-NEXT: #NO_APP 6549 ; SKX-NEXT: retq # sched: [7:1.00] 6550 ; 6551 ; BTVER2-LABEL: test_inc64: 6552 ; BTVER2: # %bb.0: 6553 ; BTVER2-NEXT: #APP 6554 ; BTVER2-NEXT: incq %rdi # sched: [1:0.50] 6555 ; BTVER2-NEXT: incq (%rsi) # sched: [5:1.00] 6556 ; BTVER2-NEXT: #NO_APP 6557 ; BTVER2-NEXT: retq # sched: [4:1.00] 6558 ; 6559 ; ZNVER1-LABEL: test_inc64: 6560 ; ZNVER1: # %bb.0: 6561 ; ZNVER1-NEXT: #APP 6562 ; ZNVER1-NEXT: incq %rdi # sched: [1:0.25] 6563 ; ZNVER1-NEXT: incq (%rsi) # sched: [5:0.50] 6564 ; ZNVER1-NEXT: #NO_APP 6565 ; ZNVER1-NEXT: retq # sched: [1:0.50] 6566 tail call void asm "incq $0 \0A\09 incq $1", "r,*m"(i64 %a0, i64* %a1) nounwind 6567 ret void 6568 } 6569 6570 define void @test_ins() optsize { 6571 ; GENERIC-LABEL: test_ins: 6572 ; GENERIC: # %bb.0: 6573 ; GENERIC-NEXT: #APP 6574 ; GENERIC-NEXT: insb %dx, %es:(%rdi) # sched: [100:0.33] 6575 ; GENERIC-NEXT: insw %dx, %es:(%rdi) # sched: [100:0.33] 6576 ; GENERIC-NEXT: insl %dx, %es:(%rdi) # sched: [100:0.33] 6577 ; GENERIC-NEXT: #NO_APP 6578 ; GENERIC-NEXT: retq # sched: [1:1.00] 6579 ; 6580 ; ATOM-LABEL: test_ins: 6581 ; ATOM: # %bb.0: 6582 ; ATOM-NEXT: #APP 6583 ; ATOM-NEXT: insb %dx, %es:(%rdi) # sched: [59:29.50] 6584 ; ATOM-NEXT: insw %dx, %es:(%rdi) # sched: [59:29.50] 6585 ; ATOM-NEXT: insl %dx, %es:(%rdi) # sched: [59:29.50] 6586 ; ATOM-NEXT: #NO_APP 6587 ; ATOM-NEXT: retq # sched: [79:39.50] 6588 ; 6589 ; SLM-LABEL: test_ins: 6590 ; SLM: # %bb.0: 6591 ; SLM-NEXT: #APP 6592 ; SLM-NEXT: insb %dx, %es:(%rdi) # sched: [100:1.00] 6593 ; SLM-NEXT: insw %dx, %es:(%rdi) # sched: [100:1.00] 6594 ; SLM-NEXT: insl %dx, %es:(%rdi) # sched: [100:1.00] 6595 ; SLM-NEXT: #NO_APP 6596 ; SLM-NEXT: retq # sched: [4:1.00] 6597 ; 6598 ; SANDY-LABEL: test_ins: 6599 ; SANDY: # %bb.0: 6600 ; SANDY-NEXT: #APP 6601 ; SANDY-NEXT: insb %dx, %es:(%rdi) # sched: [100:0.33] 6602 ; SANDY-NEXT: insw %dx, %es:(%rdi) # sched: [100:0.33] 6603 ; SANDY-NEXT: insl %dx, %es:(%rdi) # sched: [100:0.33] 6604 ; SANDY-NEXT: #NO_APP 6605 ; SANDY-NEXT: retq # sched: [1:1.00] 6606 ; 6607 ; HASWELL-LABEL: test_ins: 6608 ; HASWELL: # %bb.0: 6609 ; HASWELL-NEXT: #APP 6610 ; HASWELL-NEXT: insb %dx, %es:(%rdi) # sched: [21:1.25] 6611 ; HASWELL-NEXT: insw %dx, %es:(%rdi) # sched: [21:1.25] 6612 ; HASWELL-NEXT: insl %dx, %es:(%rdi) # sched: [21:1.25] 6613 ; HASWELL-NEXT: #NO_APP 6614 ; HASWELL-NEXT: retq # sched: [7:1.00] 6615 ; 6616 ; BROADWELL-LABEL: test_ins: 6617 ; BROADWELL: # %bb.0: 6618 ; BROADWELL-NEXT: #APP 6619 ; BROADWELL-NEXT: insb %dx, %es:(%rdi) # sched: [20:1.25] 6620 ; BROADWELL-NEXT: insw %dx, %es:(%rdi) # sched: [20:1.25] 6621 ; BROADWELL-NEXT: insl %dx, %es:(%rdi) # sched: [20:1.25] 6622 ; BROADWELL-NEXT: #NO_APP 6623 ; BROADWELL-NEXT: retq # sched: [7:1.00] 6624 ; 6625 ; SKYLAKE-LABEL: test_ins: 6626 ; SKYLAKE: # %bb.0: 6627 ; SKYLAKE-NEXT: #APP 6628 ; SKYLAKE-NEXT: insb %dx, %es:(%rdi) # sched: [20:1.25] 6629 ; SKYLAKE-NEXT: insw %dx, %es:(%rdi) # sched: [20:1.25] 6630 ; SKYLAKE-NEXT: insl %dx, %es:(%rdi) # sched: [20:1.25] 6631 ; SKYLAKE-NEXT: #NO_APP 6632 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 6633 ; 6634 ; SKX-LABEL: test_ins: 6635 ; SKX: # %bb.0: 6636 ; SKX-NEXT: #APP 6637 ; SKX-NEXT: insb %dx, %es:(%rdi) # sched: [20:1.25] 6638 ; SKX-NEXT: insw %dx, %es:(%rdi) # sched: [20:1.25] 6639 ; SKX-NEXT: insl %dx, %es:(%rdi) # sched: [20:1.25] 6640 ; SKX-NEXT: #NO_APP 6641 ; SKX-NEXT: retq # sched: [7:1.00] 6642 ; 6643 ; BTVER2-LABEL: test_ins: 6644 ; BTVER2: # %bb.0: 6645 ; BTVER2-NEXT: #APP 6646 ; BTVER2-NEXT: insb %dx, %es:(%rdi) # sched: [100:0.50] 6647 ; BTVER2-NEXT: insw %dx, %es:(%rdi) # sched: [100:0.50] 6648 ; BTVER2-NEXT: insl %dx, %es:(%rdi) # sched: [100:0.50] 6649 ; BTVER2-NEXT: #NO_APP 6650 ; BTVER2-NEXT: retq # sched: [4:1.00] 6651 ; 6652 ; ZNVER1-LABEL: test_ins: 6653 ; ZNVER1: # %bb.0: 6654 ; ZNVER1-NEXT: #APP 6655 ; ZNVER1-NEXT: insb %dx, %es:(%rdi) # sched: [100:0.25] 6656 ; ZNVER1-NEXT: insw %dx, %es:(%rdi) # sched: [100:0.25] 6657 ; ZNVER1-NEXT: insl %dx, %es:(%rdi) # sched: [100:0.25] 6658 ; ZNVER1-NEXT: #NO_APP 6659 ; ZNVER1-NEXT: retq # sched: [1:0.50] 6660 call void asm sideeffect "insb \0A\09 insw \0A\09 insl", ""() 6661 ret void 6662 } 6663 6664 define void @test_int() optsize { 6665 ; GENERIC-LABEL: test_int: 6666 ; GENERIC: # %bb.0: 6667 ; GENERIC-NEXT: #APP 6668 ; GENERIC-NEXT: int $7 # sched: [100:0.33] 6669 ; GENERIC-NEXT: #NO_APP 6670 ; GENERIC-NEXT: retq # sched: [1:1.00] 6671 ; 6672 ; ATOM-LABEL: test_int: 6673 ; ATOM: # %bb.0: 6674 ; ATOM-NEXT: #APP 6675 ; ATOM-NEXT: int $7 # sched: [127:63.50] 6676 ; ATOM-NEXT: #NO_APP 6677 ; ATOM-NEXT: retq # sched: [79:39.50] 6678 ; 6679 ; SLM-LABEL: test_int: 6680 ; SLM: # %bb.0: 6681 ; SLM-NEXT: #APP 6682 ; SLM-NEXT: int $7 # sched: [100:1.00] 6683 ; SLM-NEXT: #NO_APP 6684 ; SLM-NEXT: retq # sched: [4:1.00] 6685 ; 6686 ; SANDY-LABEL: test_int: 6687 ; SANDY: # %bb.0: 6688 ; SANDY-NEXT: #APP 6689 ; SANDY-NEXT: int $7 # sched: [100:0.33] 6690 ; SANDY-NEXT: #NO_APP 6691 ; SANDY-NEXT: retq # sched: [1:1.00] 6692 ; 6693 ; HASWELL-LABEL: test_int: 6694 ; HASWELL: # %bb.0: 6695 ; HASWELL-NEXT: #APP 6696 ; HASWELL-NEXT: int $7 # sched: [100:0.25] 6697 ; HASWELL-NEXT: #NO_APP 6698 ; HASWELL-NEXT: retq # sched: [7:1.00] 6699 ; 6700 ; BROADWELL-LABEL: test_int: 6701 ; BROADWELL: # %bb.0: 6702 ; BROADWELL-NEXT: #APP 6703 ; BROADWELL-NEXT: int $7 # sched: [100:0.25] 6704 ; BROADWELL-NEXT: #NO_APP 6705 ; BROADWELL-NEXT: retq # sched: [7:1.00] 6706 ; 6707 ; SKYLAKE-LABEL: test_int: 6708 ; SKYLAKE: # %bb.0: 6709 ; SKYLAKE-NEXT: #APP 6710 ; SKYLAKE-NEXT: int $7 # sched: [100:0.25] 6711 ; SKYLAKE-NEXT: #NO_APP 6712 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 6713 ; 6714 ; SKX-LABEL: test_int: 6715 ; SKX: # %bb.0: 6716 ; SKX-NEXT: #APP 6717 ; SKX-NEXT: int $7 # sched: [100:0.25] 6718 ; SKX-NEXT: #NO_APP 6719 ; SKX-NEXT: retq # sched: [7:1.00] 6720 ; 6721 ; BTVER2-LABEL: test_int: 6722 ; BTVER2: # %bb.0: 6723 ; BTVER2-NEXT: #APP 6724 ; BTVER2-NEXT: int $7 # sched: [100:0.50] 6725 ; BTVER2-NEXT: #NO_APP 6726 ; BTVER2-NEXT: retq # sched: [4:1.00] 6727 ; 6728 ; ZNVER1-LABEL: test_int: 6729 ; ZNVER1: # %bb.0: 6730 ; ZNVER1-NEXT: #APP 6731 ; ZNVER1-NEXT: int $7 # sched: [100:0.25] 6732 ; ZNVER1-NEXT: #NO_APP 6733 ; ZNVER1-NEXT: retq # sched: [1:0.50] 6734 call void asm sideeffect "int $0", "i"(i8 7) 6735 ret void 6736 } 6737 6738 define void @test_invlpg_invlpga(i8 *%a0) optsize { 6739 ; GENERIC-LABEL: test_invlpg_invlpga: 6740 ; GENERIC: # %bb.0: 6741 ; GENERIC-NEXT: #APP 6742 ; GENERIC-NEXT: invlpg (%rdi) # sched: [100:0.33] 6743 ; GENERIC-NEXT: invlpga %rax, %ecx # sched: [100:0.33] 6744 ; GENERIC-NEXT: #NO_APP 6745 ; GENERIC-NEXT: retq # sched: [1:1.00] 6746 ; 6747 ; ATOM-LABEL: test_invlpg_invlpga: 6748 ; ATOM: # %bb.0: 6749 ; ATOM-NEXT: #APP 6750 ; ATOM-NEXT: invlpg (%rdi) # sched: [71:35.50] 6751 ; ATOM-NEXT: invlpga %rax, %ecx # sched: [71:35.50] 6752 ; ATOM-NEXT: #NO_APP 6753 ; ATOM-NEXT: retq # sched: [79:39.50] 6754 ; 6755 ; SLM-LABEL: test_invlpg_invlpga: 6756 ; SLM: # %bb.0: 6757 ; SLM-NEXT: #APP 6758 ; SLM-NEXT: invlpg (%rdi) # sched: [100:1.00] 6759 ; SLM-NEXT: invlpga %rax, %ecx # sched: [100:1.00] 6760 ; SLM-NEXT: #NO_APP 6761 ; SLM-NEXT: retq # sched: [4:1.00] 6762 ; 6763 ; SANDY-LABEL: test_invlpg_invlpga: 6764 ; SANDY: # %bb.0: 6765 ; SANDY-NEXT: #APP 6766 ; SANDY-NEXT: invlpg (%rdi) # sched: [100:0.33] 6767 ; SANDY-NEXT: invlpga %rax, %ecx # sched: [100:0.33] 6768 ; SANDY-NEXT: #NO_APP 6769 ; SANDY-NEXT: retq # sched: [1:1.00] 6770 ; 6771 ; HASWELL-LABEL: test_invlpg_invlpga: 6772 ; HASWELL: # %bb.0: 6773 ; HASWELL-NEXT: #APP 6774 ; HASWELL-NEXT: invlpg (%rdi) # sched: [100:0.25] 6775 ; HASWELL-NEXT: invlpga %rax, %ecx # sched: [100:0.25] 6776 ; HASWELL-NEXT: #NO_APP 6777 ; HASWELL-NEXT: retq # sched: [7:1.00] 6778 ; 6779 ; BROADWELL-LABEL: test_invlpg_invlpga: 6780 ; BROADWELL: # %bb.0: 6781 ; BROADWELL-NEXT: #APP 6782 ; BROADWELL-NEXT: invlpg (%rdi) # sched: [100:0.25] 6783 ; BROADWELL-NEXT: invlpga %rax, %ecx # sched: [100:0.25] 6784 ; BROADWELL-NEXT: #NO_APP 6785 ; BROADWELL-NEXT: retq # sched: [7:1.00] 6786 ; 6787 ; SKYLAKE-LABEL: test_invlpg_invlpga: 6788 ; SKYLAKE: # %bb.0: 6789 ; SKYLAKE-NEXT: #APP 6790 ; SKYLAKE-NEXT: invlpg (%rdi) # sched: [100:0.25] 6791 ; SKYLAKE-NEXT: invlpga %rax, %ecx # sched: [100:0.25] 6792 ; SKYLAKE-NEXT: #NO_APP 6793 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 6794 ; 6795 ; SKX-LABEL: test_invlpg_invlpga: 6796 ; SKX: # %bb.0: 6797 ; SKX-NEXT: #APP 6798 ; SKX-NEXT: invlpg (%rdi) # sched: [100:0.25] 6799 ; SKX-NEXT: invlpga %rax, %ecx # sched: [100:0.25] 6800 ; SKX-NEXT: #NO_APP 6801 ; SKX-NEXT: retq # sched: [7:1.00] 6802 ; 6803 ; BTVER2-LABEL: test_invlpg_invlpga: 6804 ; BTVER2: # %bb.0: 6805 ; BTVER2-NEXT: #APP 6806 ; BTVER2-NEXT: invlpg (%rdi) # sched: [100:0.50] 6807 ; BTVER2-NEXT: invlpga %rax, %ecx # sched: [100:0.50] 6808 ; BTVER2-NEXT: #NO_APP 6809 ; BTVER2-NEXT: retq # sched: [4:1.00] 6810 ; 6811 ; ZNVER1-LABEL: test_invlpg_invlpga: 6812 ; ZNVER1: # %bb.0: 6813 ; ZNVER1-NEXT: #APP 6814 ; ZNVER1-NEXT: invlpg (%rdi) # sched: [100:0.25] 6815 ; ZNVER1-NEXT: invlpga %rax, %ecx # sched: [100:0.25] 6816 ; ZNVER1-NEXT: #NO_APP 6817 ; ZNVER1-NEXT: retq # sched: [1:0.50] 6818 tail call void asm sideeffect "invlpg $0 \0A\09 invlpga %rax, %ecx", "*m"(i8 *%a0) nounwind 6819 ret void 6820 } 6821 6822 define void @test_jcc() optsize { 6823 ; GENERIC-LABEL: test_jcc: 6824 ; GENERIC: # %bb.0: 6825 ; GENERIC-NEXT: #APP 6826 ; GENERIC-NEXT: JCCTGT: 6827 ; GENERIC-NEXT: jo JCCTGT # sched: [1:1.00] 6828 ; GENERIC-NEXT: jno JCCTGT # sched: [1:1.00] 6829 ; GENERIC-NEXT: jb JCCTGT # sched: [1:1.00] 6830 ; GENERIC-NEXT: jb JCCTGT # sched: [1:1.00] 6831 ; GENERIC-NEXT: jb JCCTGT # sched: [1:1.00] 6832 ; GENERIC-NEXT: jae JCCTGT # sched: [1:1.00] 6833 ; GENERIC-NEXT: jae JCCTGT # sched: [1:1.00] 6834 ; GENERIC-NEXT: jae JCCTGT # sched: [1:1.00] 6835 ; GENERIC-NEXT: je JCCTGT # sched: [1:1.00] 6836 ; GENERIC-NEXT: je JCCTGT # sched: [1:1.00] 6837 ; GENERIC-NEXT: jne JCCTGT # sched: [1:1.00] 6838 ; GENERIC-NEXT: jne JCCTGT # sched: [1:1.00] 6839 ; GENERIC-NEXT: jbe JCCTGT # sched: [1:1.00] 6840 ; GENERIC-NEXT: jbe JCCTGT # sched: [1:1.00] 6841 ; GENERIC-NEXT: ja JCCTGT # sched: [1:1.00] 6842 ; GENERIC-NEXT: ja JCCTGT # sched: [1:1.00] 6843 ; GENERIC-NEXT: js JCCTGT # sched: [1:1.00] 6844 ; GENERIC-NEXT: jns JCCTGT # sched: [1:1.00] 6845 ; GENERIC-NEXT: jp JCCTGT # sched: [1:1.00] 6846 ; GENERIC-NEXT: jp JCCTGT # sched: [1:1.00] 6847 ; GENERIC-NEXT: jnp JCCTGT # sched: [1:1.00] 6848 ; GENERIC-NEXT: jnp JCCTGT # sched: [1:1.00] 6849 ; GENERIC-NEXT: jl JCCTGT # sched: [1:1.00] 6850 ; GENERIC-NEXT: jl JCCTGT # sched: [1:1.00] 6851 ; GENERIC-NEXT: jge JCCTGT # sched: [1:1.00] 6852 ; GENERIC-NEXT: jge JCCTGT # sched: [1:1.00] 6853 ; GENERIC-NEXT: jle JCCTGT # sched: [1:1.00] 6854 ; GENERIC-NEXT: jle JCCTGT # sched: [1:1.00] 6855 ; GENERIC-NEXT: jg JCCTGT # sched: [1:1.00] 6856 ; GENERIC-NEXT: jg JCCTGT # sched: [1:1.00] 6857 ; GENERIC-NEXT: #NO_APP 6858 ; GENERIC-NEXT: retq # sched: [1:1.00] 6859 ; 6860 ; ATOM-LABEL: test_jcc: 6861 ; ATOM: # %bb.0: 6862 ; ATOM-NEXT: #APP 6863 ; ATOM-NEXT: JCCTGT: 6864 ; ATOM-NEXT: jo JCCTGT # sched: [1:1.00] 6865 ; ATOM-NEXT: jno JCCTGT # sched: [1:1.00] 6866 ; ATOM-NEXT: jb JCCTGT # sched: [1:1.00] 6867 ; ATOM-NEXT: jb JCCTGT # sched: [1:1.00] 6868 ; ATOM-NEXT: jb JCCTGT # sched: [1:1.00] 6869 ; ATOM-NEXT: jae JCCTGT # sched: [1:1.00] 6870 ; ATOM-NEXT: jae JCCTGT # sched: [1:1.00] 6871 ; ATOM-NEXT: jae JCCTGT # sched: [1:1.00] 6872 ; ATOM-NEXT: je JCCTGT # sched: [1:1.00] 6873 ; ATOM-NEXT: je JCCTGT # sched: [1:1.00] 6874 ; ATOM-NEXT: jne JCCTGT # sched: [1:1.00] 6875 ; ATOM-NEXT: jne JCCTGT # sched: [1:1.00] 6876 ; ATOM-NEXT: jbe JCCTGT # sched: [1:1.00] 6877 ; ATOM-NEXT: jbe JCCTGT # sched: [1:1.00] 6878 ; ATOM-NEXT: ja JCCTGT # sched: [1:1.00] 6879 ; ATOM-NEXT: ja JCCTGT # sched: [1:1.00] 6880 ; ATOM-NEXT: js JCCTGT # sched: [1:1.00] 6881 ; ATOM-NEXT: jns JCCTGT # sched: [1:1.00] 6882 ; ATOM-NEXT: jp JCCTGT # sched: [1:1.00] 6883 ; ATOM-NEXT: jp JCCTGT # sched: [1:1.00] 6884 ; ATOM-NEXT: jnp JCCTGT # sched: [1:1.00] 6885 ; ATOM-NEXT: jnp JCCTGT # sched: [1:1.00] 6886 ; ATOM-NEXT: jl JCCTGT # sched: [1:1.00] 6887 ; ATOM-NEXT: jl JCCTGT # sched: [1:1.00] 6888 ; ATOM-NEXT: jge JCCTGT # sched: [1:1.00] 6889 ; ATOM-NEXT: jge JCCTGT # sched: [1:1.00] 6890 ; ATOM-NEXT: jle JCCTGT # sched: [1:1.00] 6891 ; ATOM-NEXT: jle JCCTGT # sched: [1:1.00] 6892 ; ATOM-NEXT: jg JCCTGT # sched: [1:1.00] 6893 ; ATOM-NEXT: jg JCCTGT # sched: [1:1.00] 6894 ; ATOM-NEXT: #NO_APP 6895 ; ATOM-NEXT: retq # sched: [79:39.50] 6896 ; 6897 ; SLM-LABEL: test_jcc: 6898 ; SLM: # %bb.0: 6899 ; SLM-NEXT: #APP 6900 ; SLM-NEXT: JCCTGT: 6901 ; SLM-NEXT: jo JCCTGT # sched: [1:1.00] 6902 ; SLM-NEXT: jno JCCTGT # sched: [1:1.00] 6903 ; SLM-NEXT: jb JCCTGT # sched: [1:1.00] 6904 ; SLM-NEXT: jb JCCTGT # sched: [1:1.00] 6905 ; SLM-NEXT: jb JCCTGT # sched: [1:1.00] 6906 ; SLM-NEXT: jae JCCTGT # sched: [1:1.00] 6907 ; SLM-NEXT: jae JCCTGT # sched: [1:1.00] 6908 ; SLM-NEXT: jae JCCTGT # sched: [1:1.00] 6909 ; SLM-NEXT: je JCCTGT # sched: [1:1.00] 6910 ; SLM-NEXT: je JCCTGT # sched: [1:1.00] 6911 ; SLM-NEXT: jne JCCTGT # sched: [1:1.00] 6912 ; SLM-NEXT: jne JCCTGT # sched: [1:1.00] 6913 ; SLM-NEXT: jbe JCCTGT # sched: [1:1.00] 6914 ; SLM-NEXT: jbe JCCTGT # sched: [1:1.00] 6915 ; SLM-NEXT: ja JCCTGT # sched: [1:1.00] 6916 ; SLM-NEXT: ja JCCTGT # sched: [1:1.00] 6917 ; SLM-NEXT: js JCCTGT # sched: [1:1.00] 6918 ; SLM-NEXT: jns JCCTGT # sched: [1:1.00] 6919 ; SLM-NEXT: jp JCCTGT # sched: [1:1.00] 6920 ; SLM-NEXT: jp JCCTGT # sched: [1:1.00] 6921 ; SLM-NEXT: jnp JCCTGT # sched: [1:1.00] 6922 ; SLM-NEXT: jnp JCCTGT # sched: [1:1.00] 6923 ; SLM-NEXT: jl JCCTGT # sched: [1:1.00] 6924 ; SLM-NEXT: jl JCCTGT # sched: [1:1.00] 6925 ; SLM-NEXT: jge JCCTGT # sched: [1:1.00] 6926 ; SLM-NEXT: jge JCCTGT # sched: [1:1.00] 6927 ; SLM-NEXT: jle JCCTGT # sched: [1:1.00] 6928 ; SLM-NEXT: jle JCCTGT # sched: [1:1.00] 6929 ; SLM-NEXT: jg JCCTGT # sched: [1:1.00] 6930 ; SLM-NEXT: jg JCCTGT # sched: [1:1.00] 6931 ; SLM-NEXT: #NO_APP 6932 ; SLM-NEXT: retq # sched: [4:1.00] 6933 ; 6934 ; SANDY-LABEL: test_jcc: 6935 ; SANDY: # %bb.0: 6936 ; SANDY-NEXT: #APP 6937 ; SANDY-NEXT: JCCTGT: 6938 ; SANDY-NEXT: jo JCCTGT # sched: [1:1.00] 6939 ; SANDY-NEXT: jno JCCTGT # sched: [1:1.00] 6940 ; SANDY-NEXT: jb JCCTGT # sched: [1:1.00] 6941 ; SANDY-NEXT: jb JCCTGT # sched: [1:1.00] 6942 ; SANDY-NEXT: jb JCCTGT # sched: [1:1.00] 6943 ; SANDY-NEXT: jae JCCTGT # sched: [1:1.00] 6944 ; SANDY-NEXT: jae JCCTGT # sched: [1:1.00] 6945 ; SANDY-NEXT: jae JCCTGT # sched: [1:1.00] 6946 ; SANDY-NEXT: je JCCTGT # sched: [1:1.00] 6947 ; SANDY-NEXT: je JCCTGT # sched: [1:1.00] 6948 ; SANDY-NEXT: jne JCCTGT # sched: [1:1.00] 6949 ; SANDY-NEXT: jne JCCTGT # sched: [1:1.00] 6950 ; SANDY-NEXT: jbe JCCTGT # sched: [1:1.00] 6951 ; SANDY-NEXT: jbe JCCTGT # sched: [1:1.00] 6952 ; SANDY-NEXT: ja JCCTGT # sched: [1:1.00] 6953 ; SANDY-NEXT: ja JCCTGT # sched: [1:1.00] 6954 ; SANDY-NEXT: js JCCTGT # sched: [1:1.00] 6955 ; SANDY-NEXT: jns JCCTGT # sched: [1:1.00] 6956 ; SANDY-NEXT: jp JCCTGT # sched: [1:1.00] 6957 ; SANDY-NEXT: jp JCCTGT # sched: [1:1.00] 6958 ; SANDY-NEXT: jnp JCCTGT # sched: [1:1.00] 6959 ; SANDY-NEXT: jnp JCCTGT # sched: [1:1.00] 6960 ; SANDY-NEXT: jl JCCTGT # sched: [1:1.00] 6961 ; SANDY-NEXT: jl JCCTGT # sched: [1:1.00] 6962 ; SANDY-NEXT: jge JCCTGT # sched: [1:1.00] 6963 ; SANDY-NEXT: jge JCCTGT # sched: [1:1.00] 6964 ; SANDY-NEXT: jle JCCTGT # sched: [1:1.00] 6965 ; SANDY-NEXT: jle JCCTGT # sched: [1:1.00] 6966 ; SANDY-NEXT: jg JCCTGT # sched: [1:1.00] 6967 ; SANDY-NEXT: jg JCCTGT # sched: [1:1.00] 6968 ; SANDY-NEXT: #NO_APP 6969 ; SANDY-NEXT: retq # sched: [1:1.00] 6970 ; 6971 ; HASWELL-LABEL: test_jcc: 6972 ; HASWELL: # %bb.0: 6973 ; HASWELL-NEXT: #APP 6974 ; HASWELL-NEXT: JCCTGT: 6975 ; HASWELL-NEXT: jo JCCTGT # sched: [1:0.50] 6976 ; HASWELL-NEXT: jno JCCTGT # sched: [1:0.50] 6977 ; HASWELL-NEXT: jb JCCTGT # sched: [1:0.50] 6978 ; HASWELL-NEXT: jb JCCTGT # sched: [1:0.50] 6979 ; HASWELL-NEXT: jb JCCTGT # sched: [1:0.50] 6980 ; HASWELL-NEXT: jae JCCTGT # sched: [1:0.50] 6981 ; HASWELL-NEXT: jae JCCTGT # sched: [1:0.50] 6982 ; HASWELL-NEXT: jae JCCTGT # sched: [1:0.50] 6983 ; HASWELL-NEXT: je JCCTGT # sched: [1:0.50] 6984 ; HASWELL-NEXT: je JCCTGT # sched: [1:0.50] 6985 ; HASWELL-NEXT: jne JCCTGT # sched: [1:0.50] 6986 ; HASWELL-NEXT: jne JCCTGT # sched: [1:0.50] 6987 ; HASWELL-NEXT: jbe JCCTGT # sched: [1:0.50] 6988 ; HASWELL-NEXT: jbe JCCTGT # sched: [1:0.50] 6989 ; HASWELL-NEXT: ja JCCTGT # sched: [1:0.50] 6990 ; HASWELL-NEXT: ja JCCTGT # sched: [1:0.50] 6991 ; HASWELL-NEXT: js JCCTGT # sched: [1:0.50] 6992 ; HASWELL-NEXT: jns JCCTGT # sched: [1:0.50] 6993 ; HASWELL-NEXT: jp JCCTGT # sched: [1:0.50] 6994 ; HASWELL-NEXT: jp JCCTGT # sched: [1:0.50] 6995 ; HASWELL-NEXT: jnp JCCTGT # sched: [1:0.50] 6996 ; HASWELL-NEXT: jnp JCCTGT # sched: [1:0.50] 6997 ; HASWELL-NEXT: jl JCCTGT # sched: [1:0.50] 6998 ; HASWELL-NEXT: jl JCCTGT # sched: [1:0.50] 6999 ; HASWELL-NEXT: jge JCCTGT # sched: [1:0.50] 7000 ; HASWELL-NEXT: jge JCCTGT # sched: [1:0.50] 7001 ; HASWELL-NEXT: jle JCCTGT # sched: [1:0.50] 7002 ; HASWELL-NEXT: jle JCCTGT # sched: [1:0.50] 7003 ; HASWELL-NEXT: jg JCCTGT # sched: [1:0.50] 7004 ; HASWELL-NEXT: jg JCCTGT # sched: [1:0.50] 7005 ; HASWELL-NEXT: #NO_APP 7006 ; HASWELL-NEXT: retq # sched: [7:1.00] 7007 ; 7008 ; BROADWELL-LABEL: test_jcc: 7009 ; BROADWELL: # %bb.0: 7010 ; BROADWELL-NEXT: #APP 7011 ; BROADWELL-NEXT: JCCTGT: 7012 ; BROADWELL-NEXT: jo JCCTGT # sched: [1:0.50] 7013 ; BROADWELL-NEXT: jno JCCTGT # sched: [1:0.50] 7014 ; BROADWELL-NEXT: jb JCCTGT # sched: [1:0.50] 7015 ; BROADWELL-NEXT: jb JCCTGT # sched: [1:0.50] 7016 ; BROADWELL-NEXT: jb JCCTGT # sched: [1:0.50] 7017 ; BROADWELL-NEXT: jae JCCTGT # sched: [1:0.50] 7018 ; BROADWELL-NEXT: jae JCCTGT # sched: [1:0.50] 7019 ; BROADWELL-NEXT: jae JCCTGT # sched: [1:0.50] 7020 ; BROADWELL-NEXT: je JCCTGT # sched: [1:0.50] 7021 ; BROADWELL-NEXT: je JCCTGT # sched: [1:0.50] 7022 ; BROADWELL-NEXT: jne JCCTGT # sched: [1:0.50] 7023 ; BROADWELL-NEXT: jne JCCTGT # sched: [1:0.50] 7024 ; BROADWELL-NEXT: jbe JCCTGT # sched: [1:0.50] 7025 ; BROADWELL-NEXT: jbe JCCTGT # sched: [1:0.50] 7026 ; BROADWELL-NEXT: ja JCCTGT # sched: [1:0.50] 7027 ; BROADWELL-NEXT: ja JCCTGT # sched: [1:0.50] 7028 ; BROADWELL-NEXT: js JCCTGT # sched: [1:0.50] 7029 ; BROADWELL-NEXT: jns JCCTGT # sched: [1:0.50] 7030 ; BROADWELL-NEXT: jp JCCTGT # sched: [1:0.50] 7031 ; BROADWELL-NEXT: jp JCCTGT # sched: [1:0.50] 7032 ; BROADWELL-NEXT: jnp JCCTGT # sched: [1:0.50] 7033 ; BROADWELL-NEXT: jnp JCCTGT # sched: [1:0.50] 7034 ; BROADWELL-NEXT: jl JCCTGT # sched: [1:0.50] 7035 ; BROADWELL-NEXT: jl JCCTGT # sched: [1:0.50] 7036 ; BROADWELL-NEXT: jge JCCTGT # sched: [1:0.50] 7037 ; BROADWELL-NEXT: jge JCCTGT # sched: [1:0.50] 7038 ; BROADWELL-NEXT: jle JCCTGT # sched: [1:0.50] 7039 ; BROADWELL-NEXT: jle JCCTGT # sched: [1:0.50] 7040 ; BROADWELL-NEXT: jg JCCTGT # sched: [1:0.50] 7041 ; BROADWELL-NEXT: jg JCCTGT # sched: [1:0.50] 7042 ; BROADWELL-NEXT: #NO_APP 7043 ; BROADWELL-NEXT: retq # sched: [7:1.00] 7044 ; 7045 ; SKYLAKE-LABEL: test_jcc: 7046 ; SKYLAKE: # %bb.0: 7047 ; SKYLAKE-NEXT: #APP 7048 ; SKYLAKE-NEXT: JCCTGT: 7049 ; SKYLAKE-NEXT: jo JCCTGT # sched: [1:0.50] 7050 ; SKYLAKE-NEXT: jno JCCTGT # sched: [1:0.50] 7051 ; SKYLAKE-NEXT: jb JCCTGT # sched: [1:0.50] 7052 ; SKYLAKE-NEXT: jb JCCTGT # sched: [1:0.50] 7053 ; SKYLAKE-NEXT: jb JCCTGT # sched: [1:0.50] 7054 ; SKYLAKE-NEXT: jae JCCTGT # sched: [1:0.50] 7055 ; SKYLAKE-NEXT: jae JCCTGT # sched: [1:0.50] 7056 ; SKYLAKE-NEXT: jae JCCTGT # sched: [1:0.50] 7057 ; SKYLAKE-NEXT: je JCCTGT # sched: [1:0.50] 7058 ; SKYLAKE-NEXT: je JCCTGT # sched: [1:0.50] 7059 ; SKYLAKE-NEXT: jne JCCTGT # sched: [1:0.50] 7060 ; SKYLAKE-NEXT: jne JCCTGT # sched: [1:0.50] 7061 ; SKYLAKE-NEXT: jbe JCCTGT # sched: [1:0.50] 7062 ; SKYLAKE-NEXT: jbe JCCTGT # sched: [1:0.50] 7063 ; SKYLAKE-NEXT: ja JCCTGT # sched: [1:0.50] 7064 ; SKYLAKE-NEXT: ja JCCTGT # sched: [1:0.50] 7065 ; SKYLAKE-NEXT: js JCCTGT # sched: [1:0.50] 7066 ; SKYLAKE-NEXT: jns JCCTGT # sched: [1:0.50] 7067 ; SKYLAKE-NEXT: jp JCCTGT # sched: [1:0.50] 7068 ; SKYLAKE-NEXT: jp JCCTGT # sched: [1:0.50] 7069 ; SKYLAKE-NEXT: jnp JCCTGT # sched: [1:0.50] 7070 ; SKYLAKE-NEXT: jnp JCCTGT # sched: [1:0.50] 7071 ; SKYLAKE-NEXT: jl JCCTGT # sched: [1:0.50] 7072 ; SKYLAKE-NEXT: jl JCCTGT # sched: [1:0.50] 7073 ; SKYLAKE-NEXT: jge JCCTGT # sched: [1:0.50] 7074 ; SKYLAKE-NEXT: jge JCCTGT # sched: [1:0.50] 7075 ; SKYLAKE-NEXT: jle JCCTGT # sched: [1:0.50] 7076 ; SKYLAKE-NEXT: jle JCCTGT # sched: [1:0.50] 7077 ; SKYLAKE-NEXT: jg JCCTGT # sched: [1:0.50] 7078 ; SKYLAKE-NEXT: jg JCCTGT # sched: [1:0.50] 7079 ; SKYLAKE-NEXT: #NO_APP 7080 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 7081 ; 7082 ; SKX-LABEL: test_jcc: 7083 ; SKX: # %bb.0: 7084 ; SKX-NEXT: #APP 7085 ; SKX-NEXT: JCCTGT: 7086 ; SKX-NEXT: jo JCCTGT # sched: [1:0.50] 7087 ; SKX-NEXT: jno JCCTGT # sched: [1:0.50] 7088 ; SKX-NEXT: jb JCCTGT # sched: [1:0.50] 7089 ; SKX-NEXT: jb JCCTGT # sched: [1:0.50] 7090 ; SKX-NEXT: jb JCCTGT # sched: [1:0.50] 7091 ; SKX-NEXT: jae JCCTGT # sched: [1:0.50] 7092 ; SKX-NEXT: jae JCCTGT # sched: [1:0.50] 7093 ; SKX-NEXT: jae JCCTGT # sched: [1:0.50] 7094 ; SKX-NEXT: je JCCTGT # sched: [1:0.50] 7095 ; SKX-NEXT: je JCCTGT # sched: [1:0.50] 7096 ; SKX-NEXT: jne JCCTGT # sched: [1:0.50] 7097 ; SKX-NEXT: jne JCCTGT # sched: [1:0.50] 7098 ; SKX-NEXT: jbe JCCTGT # sched: [1:0.50] 7099 ; SKX-NEXT: jbe JCCTGT # sched: [1:0.50] 7100 ; SKX-NEXT: ja JCCTGT # sched: [1:0.50] 7101 ; SKX-NEXT: ja JCCTGT # sched: [1:0.50] 7102 ; SKX-NEXT: js JCCTGT # sched: [1:0.50] 7103 ; SKX-NEXT: jns JCCTGT # sched: [1:0.50] 7104 ; SKX-NEXT: jp JCCTGT # sched: [1:0.50] 7105 ; SKX-NEXT: jp JCCTGT # sched: [1:0.50] 7106 ; SKX-NEXT: jnp JCCTGT # sched: [1:0.50] 7107 ; SKX-NEXT: jnp JCCTGT # sched: [1:0.50] 7108 ; SKX-NEXT: jl JCCTGT # sched: [1:0.50] 7109 ; SKX-NEXT: jl JCCTGT # sched: [1:0.50] 7110 ; SKX-NEXT: jge JCCTGT # sched: [1:0.50] 7111 ; SKX-NEXT: jge JCCTGT # sched: [1:0.50] 7112 ; SKX-NEXT: jle JCCTGT # sched: [1:0.50] 7113 ; SKX-NEXT: jle JCCTGT # sched: [1:0.50] 7114 ; SKX-NEXT: jg JCCTGT # sched: [1:0.50] 7115 ; SKX-NEXT: jg JCCTGT # sched: [1:0.50] 7116 ; SKX-NEXT: #NO_APP 7117 ; SKX-NEXT: retq # sched: [7:1.00] 7118 ; 7119 ; BTVER2-LABEL: test_jcc: 7120 ; BTVER2: # %bb.0: 7121 ; BTVER2-NEXT: #APP 7122 ; BTVER2-NEXT: JCCTGT: 7123 ; BTVER2-NEXT: jo JCCTGT # sched: [1:0.50] 7124 ; BTVER2-NEXT: jno JCCTGT # sched: [1:0.50] 7125 ; BTVER2-NEXT: jb JCCTGT # sched: [1:0.50] 7126 ; BTVER2-NEXT: jb JCCTGT # sched: [1:0.50] 7127 ; BTVER2-NEXT: jb JCCTGT # sched: [1:0.50] 7128 ; BTVER2-NEXT: jae JCCTGT # sched: [1:0.50] 7129 ; BTVER2-NEXT: jae JCCTGT # sched: [1:0.50] 7130 ; BTVER2-NEXT: jae JCCTGT # sched: [1:0.50] 7131 ; BTVER2-NEXT: je JCCTGT # sched: [1:0.50] 7132 ; BTVER2-NEXT: je JCCTGT # sched: [1:0.50] 7133 ; BTVER2-NEXT: jne JCCTGT # sched: [1:0.50] 7134 ; BTVER2-NEXT: jne JCCTGT # sched: [1:0.50] 7135 ; BTVER2-NEXT: jbe JCCTGT # sched: [1:0.50] 7136 ; BTVER2-NEXT: jbe JCCTGT # sched: [1:0.50] 7137 ; BTVER2-NEXT: ja JCCTGT # sched: [1:0.50] 7138 ; BTVER2-NEXT: ja JCCTGT # sched: [1:0.50] 7139 ; BTVER2-NEXT: js JCCTGT # sched: [1:0.50] 7140 ; BTVER2-NEXT: jns JCCTGT # sched: [1:0.50] 7141 ; BTVER2-NEXT: jp JCCTGT # sched: [1:0.50] 7142 ; BTVER2-NEXT: jp JCCTGT # sched: [1:0.50] 7143 ; BTVER2-NEXT: jnp JCCTGT # sched: [1:0.50] 7144 ; BTVER2-NEXT: jnp JCCTGT # sched: [1:0.50] 7145 ; BTVER2-NEXT: jl JCCTGT # sched: [1:0.50] 7146 ; BTVER2-NEXT: jl JCCTGT # sched: [1:0.50] 7147 ; BTVER2-NEXT: jge JCCTGT # sched: [1:0.50] 7148 ; BTVER2-NEXT: jge JCCTGT # sched: [1:0.50] 7149 ; BTVER2-NEXT: jle JCCTGT # sched: [1:0.50] 7150 ; BTVER2-NEXT: jle JCCTGT # sched: [1:0.50] 7151 ; BTVER2-NEXT: jg JCCTGT # sched: [1:0.50] 7152 ; BTVER2-NEXT: jg JCCTGT # sched: [1:0.50] 7153 ; BTVER2-NEXT: #NO_APP 7154 ; BTVER2-NEXT: retq # sched: [4:1.00] 7155 ; 7156 ; ZNVER1-LABEL: test_jcc: 7157 ; ZNVER1: # %bb.0: 7158 ; ZNVER1-NEXT: #APP 7159 ; ZNVER1-NEXT: JCCTGT: 7160 ; ZNVER1-NEXT: jo JCCTGT # sched: [1:0.25] 7161 ; ZNVER1-NEXT: jno JCCTGT # sched: [1:0.25] 7162 ; ZNVER1-NEXT: jb JCCTGT # sched: [1:0.25] 7163 ; ZNVER1-NEXT: jb JCCTGT # sched: [1:0.25] 7164 ; ZNVER1-NEXT: jb JCCTGT # sched: [1:0.25] 7165 ; ZNVER1-NEXT: jae JCCTGT # sched: [1:0.25] 7166 ; ZNVER1-NEXT: jae JCCTGT # sched: [1:0.25] 7167 ; ZNVER1-NEXT: jae JCCTGT # sched: [1:0.25] 7168 ; ZNVER1-NEXT: je JCCTGT # sched: [1:0.25] 7169 ; ZNVER1-NEXT: je JCCTGT # sched: [1:0.25] 7170 ; ZNVER1-NEXT: jne JCCTGT # sched: [1:0.25] 7171 ; ZNVER1-NEXT: jne JCCTGT # sched: [1:0.25] 7172 ; ZNVER1-NEXT: jbe JCCTGT # sched: [1:0.25] 7173 ; ZNVER1-NEXT: jbe JCCTGT # sched: [1:0.25] 7174 ; ZNVER1-NEXT: ja JCCTGT # sched: [1:0.25] 7175 ; ZNVER1-NEXT: ja JCCTGT # sched: [1:0.25] 7176 ; ZNVER1-NEXT: js JCCTGT # sched: [1:0.25] 7177 ; ZNVER1-NEXT: jns JCCTGT # sched: [1:0.25] 7178 ; ZNVER1-NEXT: jp JCCTGT # sched: [1:0.25] 7179 ; ZNVER1-NEXT: jp JCCTGT # sched: [1:0.25] 7180 ; ZNVER1-NEXT: jnp JCCTGT # sched: [1:0.25] 7181 ; ZNVER1-NEXT: jnp JCCTGT # sched: [1:0.25] 7182 ; ZNVER1-NEXT: jl JCCTGT # sched: [1:0.25] 7183 ; ZNVER1-NEXT: jl JCCTGT # sched: [1:0.25] 7184 ; ZNVER1-NEXT: jge JCCTGT # sched: [1:0.25] 7185 ; ZNVER1-NEXT: jge JCCTGT # sched: [1:0.25] 7186 ; ZNVER1-NEXT: jle JCCTGT # sched: [1:0.25] 7187 ; ZNVER1-NEXT: jle JCCTGT # sched: [1:0.25] 7188 ; ZNVER1-NEXT: jg JCCTGT # sched: [1:0.25] 7189 ; ZNVER1-NEXT: jg JCCTGT # sched: [1:0.25] 7190 ; ZNVER1-NEXT: #NO_APP 7191 ; ZNVER1-NEXT: retq # sched: [1:0.50] 7192 call void asm sideeffect "JCCTGT: \0A\09 jo JCCTGT \0A\09 jno JCCTGT \0A\09 jb JCCTGT \0A\09 jc JCCTGT \0A\09 jnae JCCTGT \0A\09 jnb JCCTGT \0A\09 jnc JCCTGT \0A\09 jae JCCTGT \0A\09 jz JCCTGT \0A\09 je JCCTGT \0A\09 jnz JCCTGT \0A\09 jne JCCTGT \0A\09 jbe JCCTGT \0A\09 jna JCCTGT \0A\09 jnbe JCCTGT \0A\09 ja JCCTGT \0A\09 js JCCTGT \0A\09 jns JCCTGT \0A\09 jp JCCTGT \0A\09 jpe JCCTGT \0A\09 jnp JCCTGT \0A\09 jpo JCCTGT \0A\09 jl JCCTGT \0A\09 jnge JCCTGT \0A\09 jnl JCCTGT \0A\09 jge JCCTGT \0A\09 jle JCCTGT \0A\09 jng JCCTGT \0A\09 jnle JCCTGT \0A\09 jg JCCTGT", ""() 7193 ret void 7194 } 7195 7196 define void @test_jecxz_jrcxz() optsize { 7197 ; GENERIC-LABEL: test_jecxz_jrcxz: 7198 ; GENERIC: # %bb.0: 7199 ; GENERIC-NEXT: #APP 7200 ; GENERIC-NEXT: JXTGT: 7201 ; GENERIC-NEXT: jecxz JXTGT # sched: [2:1.00] 7202 ; GENERIC-NEXT: jrcxz JXTGT # sched: [2:1.00] 7203 ; GENERIC-NEXT: #NO_APP 7204 ; GENERIC-NEXT: retq # sched: [1:1.00] 7205 ; 7206 ; ATOM-LABEL: test_jecxz_jrcxz: 7207 ; ATOM: # %bb.0: 7208 ; ATOM-NEXT: #APP 7209 ; ATOM-NEXT: JXTGT: 7210 ; ATOM-NEXT: jecxz JXTGT # sched: [4:2.00] 7211 ; ATOM-NEXT: jrcxz JXTGT # sched: [4:2.00] 7212 ; ATOM-NEXT: #NO_APP 7213 ; ATOM-NEXT: retq # sched: [79:39.50] 7214 ; 7215 ; SLM-LABEL: test_jecxz_jrcxz: 7216 ; SLM: # %bb.0: 7217 ; SLM-NEXT: #APP 7218 ; SLM-NEXT: JXTGT: 7219 ; SLM-NEXT: jecxz JXTGT # sched: [1:1.00] 7220 ; SLM-NEXT: jrcxz JXTGT # sched: [1:1.00] 7221 ; SLM-NEXT: #NO_APP 7222 ; SLM-NEXT: retq # sched: [4:1.00] 7223 ; 7224 ; SANDY-LABEL: test_jecxz_jrcxz: 7225 ; SANDY: # %bb.0: 7226 ; SANDY-NEXT: #APP 7227 ; SANDY-NEXT: JXTGT: 7228 ; SANDY-NEXT: jecxz JXTGT # sched: [2:1.00] 7229 ; SANDY-NEXT: jrcxz JXTGT # sched: [2:1.00] 7230 ; SANDY-NEXT: #NO_APP 7231 ; SANDY-NEXT: retq # sched: [1:1.00] 7232 ; 7233 ; HASWELL-LABEL: test_jecxz_jrcxz: 7234 ; HASWELL: # %bb.0: 7235 ; HASWELL-NEXT: #APP 7236 ; HASWELL-NEXT: JXTGT: 7237 ; HASWELL-NEXT: jecxz JXTGT # sched: [2:0.50] 7238 ; HASWELL-NEXT: jrcxz JXTGT # sched: [2:0.50] 7239 ; HASWELL-NEXT: #NO_APP 7240 ; HASWELL-NEXT: retq # sched: [7:1.00] 7241 ; 7242 ; BROADWELL-LABEL: test_jecxz_jrcxz: 7243 ; BROADWELL: # %bb.0: 7244 ; BROADWELL-NEXT: #APP 7245 ; BROADWELL-NEXT: JXTGT: 7246 ; BROADWELL-NEXT: jecxz JXTGT # sched: [2:0.50] 7247 ; BROADWELL-NEXT: jrcxz JXTGT # sched: [2:0.50] 7248 ; BROADWELL-NEXT: #NO_APP 7249 ; BROADWELL-NEXT: retq # sched: [7:1.00] 7250 ; 7251 ; SKYLAKE-LABEL: test_jecxz_jrcxz: 7252 ; SKYLAKE: # %bb.0: 7253 ; SKYLAKE-NEXT: #APP 7254 ; SKYLAKE-NEXT: JXTGT: 7255 ; SKYLAKE-NEXT: jecxz JXTGT # sched: [2:0.50] 7256 ; SKYLAKE-NEXT: jrcxz JXTGT # sched: [2:0.50] 7257 ; SKYLAKE-NEXT: #NO_APP 7258 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 7259 ; 7260 ; SKX-LABEL: test_jecxz_jrcxz: 7261 ; SKX: # %bb.0: 7262 ; SKX-NEXT: #APP 7263 ; SKX-NEXT: JXTGT: 7264 ; SKX-NEXT: jecxz JXTGT # sched: [2:0.50] 7265 ; SKX-NEXT: jrcxz JXTGT # sched: [2:0.50] 7266 ; SKX-NEXT: #NO_APP 7267 ; SKX-NEXT: retq # sched: [7:1.00] 7268 ; 7269 ; BTVER2-LABEL: test_jecxz_jrcxz: 7270 ; BTVER2: # %bb.0: 7271 ; BTVER2-NEXT: #APP 7272 ; BTVER2-NEXT: JXTGT: 7273 ; BTVER2-NEXT: jecxz JXTGT # sched: [1:0.50] 7274 ; BTVER2-NEXT: jrcxz JXTGT # sched: [1:0.50] 7275 ; BTVER2-NEXT: #NO_APP 7276 ; BTVER2-NEXT: retq # sched: [4:1.00] 7277 ; 7278 ; ZNVER1-LABEL: test_jecxz_jrcxz: 7279 ; ZNVER1: # %bb.0: 7280 ; ZNVER1-NEXT: #APP 7281 ; ZNVER1-NEXT: JXTGT: 7282 ; ZNVER1-NEXT: jecxz JXTGT # sched: [1:0.50] 7283 ; ZNVER1-NEXT: jrcxz JXTGT # sched: [1:0.50] 7284 ; ZNVER1-NEXT: #NO_APP 7285 ; ZNVER1-NEXT: retq # sched: [1:0.50] 7286 call void asm sideeffect "JXTGT: \0A\09 jecxz JXTGT \0A\09 jrcxz JXTGT", ""() 7287 ret void 7288 } 7289 7290 ; TODO - test_jmp 7291 7292 define void @test_lahf_sahf() optsize { 7293 ; GENERIC-LABEL: test_lahf_sahf: 7294 ; GENERIC: # %bb.0: 7295 ; GENERIC-NEXT: #APP 7296 ; GENERIC-NEXT: lahf # sched: [1:0.50] 7297 ; GENERIC-NEXT: sahf # sched: [1:0.50] 7298 ; GENERIC-NEXT: #NO_APP 7299 ; GENERIC-NEXT: retq # sched: [1:1.00] 7300 ; 7301 ; ATOM-LABEL: test_lahf_sahf: 7302 ; ATOM: # %bb.0: 7303 ; ATOM-NEXT: #APP 7304 ; ATOM-NEXT: lahf # sched: [2:1.00] 7305 ; ATOM-NEXT: sahf # sched: [2:1.00] 7306 ; ATOM-NEXT: #NO_APP 7307 ; ATOM-NEXT: retq # sched: [79:39.50] 7308 ; 7309 ; SLM-LABEL: test_lahf_sahf: 7310 ; SLM: # %bb.0: 7311 ; SLM-NEXT: #APP 7312 ; SLM-NEXT: lahf # sched: [1:0.50] 7313 ; SLM-NEXT: sahf # sched: [1:0.50] 7314 ; SLM-NEXT: #NO_APP 7315 ; SLM-NEXT: retq # sched: [4:1.00] 7316 ; 7317 ; SANDY-LABEL: test_lahf_sahf: 7318 ; SANDY: # %bb.0: 7319 ; SANDY-NEXT: #APP 7320 ; SANDY-NEXT: lahf # sched: [1:0.50] 7321 ; SANDY-NEXT: sahf # sched: [1:0.50] 7322 ; SANDY-NEXT: #NO_APP 7323 ; SANDY-NEXT: retq # sched: [1:1.00] 7324 ; 7325 ; HASWELL-LABEL: test_lahf_sahf: 7326 ; HASWELL: # %bb.0: 7327 ; HASWELL-NEXT: #APP 7328 ; HASWELL-NEXT: lahf # sched: [1:0.50] 7329 ; HASWELL-NEXT: sahf # sched: [1:0.50] 7330 ; HASWELL-NEXT: #NO_APP 7331 ; HASWELL-NEXT: retq # sched: [7:1.00] 7332 ; 7333 ; BROADWELL-LABEL: test_lahf_sahf: 7334 ; BROADWELL: # %bb.0: 7335 ; BROADWELL-NEXT: #APP 7336 ; BROADWELL-NEXT: lahf # sched: [1:0.50] 7337 ; BROADWELL-NEXT: sahf # sched: [1:0.50] 7338 ; BROADWELL-NEXT: #NO_APP 7339 ; BROADWELL-NEXT: retq # sched: [7:1.00] 7340 ; 7341 ; SKYLAKE-LABEL: test_lahf_sahf: 7342 ; SKYLAKE: # %bb.0: 7343 ; SKYLAKE-NEXT: #APP 7344 ; SKYLAKE-NEXT: lahf # sched: [1:0.50] 7345 ; SKYLAKE-NEXT: sahf # sched: [1:0.50] 7346 ; SKYLAKE-NEXT: #NO_APP 7347 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 7348 ; 7349 ; SKX-LABEL: test_lahf_sahf: 7350 ; SKX: # %bb.0: 7351 ; SKX-NEXT: #APP 7352 ; SKX-NEXT: lahf # sched: [1:0.50] 7353 ; SKX-NEXT: sahf # sched: [1:0.50] 7354 ; SKX-NEXT: #NO_APP 7355 ; SKX-NEXT: retq # sched: [7:1.00] 7356 ; 7357 ; BTVER2-LABEL: test_lahf_sahf: 7358 ; BTVER2: # %bb.0: 7359 ; BTVER2-NEXT: #APP 7360 ; BTVER2-NEXT: lahf # sched: [1:0.50] 7361 ; BTVER2-NEXT: sahf # sched: [1:0.50] 7362 ; BTVER2-NEXT: #NO_APP 7363 ; BTVER2-NEXT: retq # sched: [4:1.00] 7364 ; 7365 ; ZNVER1-LABEL: test_lahf_sahf: 7366 ; ZNVER1: # %bb.0: 7367 ; ZNVER1-NEXT: #APP 7368 ; ZNVER1-NEXT: lahf # sched: [100:0.25] 7369 ; ZNVER1-NEXT: sahf # sched: [2:0.25] 7370 ; ZNVER1-NEXT: #NO_APP 7371 ; ZNVER1-NEXT: retq # sched: [1:0.50] 7372 tail call void asm "lahf \0A\09 sahf", ""() nounwind 7373 ret void 7374 } 7375 7376 ; TODO - test_lds 7377 ; TODO - test_les 7378 ; TODO - test_lfs 7379 ; TODO - test_lgs 7380 ; TODO - test_lss 7381 7382 ; TODO - test_lea 7383 7384 define void @test_leave() optsize { 7385 ; GENERIC-LABEL: test_leave: 7386 ; GENERIC: # %bb.0: 7387 ; GENERIC-NEXT: #APP 7388 ; GENERIC-NEXT: leave # sched: [7:0.67] 7389 ; GENERIC-NEXT: #NO_APP 7390 ; GENERIC-NEXT: retq # sched: [1:1.00] 7391 ; 7392 ; ATOM-LABEL: test_leave: 7393 ; ATOM: # %bb.0: 7394 ; ATOM-NEXT: #APP 7395 ; ATOM-NEXT: leave # sched: [2:1.00] 7396 ; ATOM-NEXT: #NO_APP 7397 ; ATOM-NEXT: retq # sched: [79:39.50] 7398 ; 7399 ; SLM-LABEL: test_leave: 7400 ; SLM: # %bb.0: 7401 ; SLM-NEXT: #APP 7402 ; SLM-NEXT: leave # sched: [1:0.50] 7403 ; SLM-NEXT: #NO_APP 7404 ; SLM-NEXT: retq # sched: [4:1.00] 7405 ; 7406 ; SANDY-LABEL: test_leave: 7407 ; SANDY: # %bb.0: 7408 ; SANDY-NEXT: #APP 7409 ; SANDY-NEXT: leave # sched: [7:0.67] 7410 ; SANDY-NEXT: #NO_APP 7411 ; SANDY-NEXT: retq # sched: [1:1.00] 7412 ; 7413 ; HASWELL-LABEL: test_leave: 7414 ; HASWELL: # %bb.0: 7415 ; HASWELL-NEXT: #APP 7416 ; HASWELL-NEXT: leave # sched: [7:0.50] 7417 ; HASWELL-NEXT: #NO_APP 7418 ; HASWELL-NEXT: retq # sched: [7:1.00] 7419 ; 7420 ; BROADWELL-LABEL: test_leave: 7421 ; BROADWELL: # %bb.0: 7422 ; BROADWELL-NEXT: #APP 7423 ; BROADWELL-NEXT: leave # sched: [7:0.50] 7424 ; BROADWELL-NEXT: #NO_APP 7425 ; BROADWELL-NEXT: retq # sched: [7:1.00] 7426 ; 7427 ; SKYLAKE-LABEL: test_leave: 7428 ; SKYLAKE: # %bb.0: 7429 ; SKYLAKE-NEXT: #APP 7430 ; SKYLAKE-NEXT: leave # sched: [7:0.50] 7431 ; SKYLAKE-NEXT: #NO_APP 7432 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 7433 ; 7434 ; SKX-LABEL: test_leave: 7435 ; SKX: # %bb.0: 7436 ; SKX-NEXT: #APP 7437 ; SKX-NEXT: leave # sched: [7:0.50] 7438 ; SKX-NEXT: #NO_APP 7439 ; SKX-NEXT: retq # sched: [7:1.00] 7440 ; 7441 ; BTVER2-LABEL: test_leave: 7442 ; BTVER2: # %bb.0: 7443 ; BTVER2-NEXT: #APP 7444 ; BTVER2-NEXT: leave # sched: [1:0.50] 7445 ; BTVER2-NEXT: #NO_APP 7446 ; BTVER2-NEXT: retq # sched: [4:1.00] 7447 ; 7448 ; ZNVER1-LABEL: test_leave: 7449 ; ZNVER1: # %bb.0: 7450 ; ZNVER1-NEXT: #APP 7451 ; ZNVER1-NEXT: leave # sched: [8:0.50] 7452 ; ZNVER1-NEXT: #NO_APP 7453 ; ZNVER1-NEXT: retq # sched: [1:0.50] 7454 tail call void asm "leave", ""() nounwind 7455 ret void 7456 } 7457 7458 define void @test_lods() optsize { 7459 ; GENERIC-LABEL: test_lods: 7460 ; GENERIC: # %bb.0: 7461 ; GENERIC-NEXT: #APP 7462 ; GENERIC-NEXT: lodsb (%rsi), %al # sched: [7:0.67] 7463 ; GENERIC-NEXT: lodsw (%rsi), %ax # sched: [7:0.67] 7464 ; GENERIC-NEXT: lodsl (%rsi), %eax # sched: [6:0.50] 7465 ; GENERIC-NEXT: lodsq (%rsi), %rax # sched: [6:0.50] 7466 ; GENERIC-NEXT: #NO_APP 7467 ; GENERIC-NEXT: retq # sched: [1:1.00] 7468 ; 7469 ; ATOM-LABEL: test_lods: 7470 ; ATOM: # %bb.0: 7471 ; ATOM-NEXT: #APP 7472 ; ATOM-NEXT: lodsb (%rsi), %al # sched: [2:1.00] 7473 ; ATOM-NEXT: lodsw (%rsi), %ax # sched: [2:1.00] 7474 ; ATOM-NEXT: lodsl (%rsi), %eax # sched: [2:1.00] 7475 ; ATOM-NEXT: lodsq (%rsi), %rax # sched: [2:1.00] 7476 ; ATOM-NEXT: #NO_APP 7477 ; ATOM-NEXT: retq # sched: [79:39.50] 7478 ; 7479 ; SLM-LABEL: test_lods: 7480 ; SLM: # %bb.0: 7481 ; SLM-NEXT: #APP 7482 ; SLM-NEXT: lodsb (%rsi), %al # sched: [100:1.00] 7483 ; SLM-NEXT: lodsw (%rsi), %ax # sched: [100:1.00] 7484 ; SLM-NEXT: lodsl (%rsi), %eax # sched: [100:1.00] 7485 ; SLM-NEXT: lodsq (%rsi), %rax # sched: [100:1.00] 7486 ; SLM-NEXT: #NO_APP 7487 ; SLM-NEXT: retq # sched: [4:1.00] 7488 ; 7489 ; SANDY-LABEL: test_lods: 7490 ; SANDY: # %bb.0: 7491 ; SANDY-NEXT: #APP 7492 ; SANDY-NEXT: lodsb (%rsi), %al # sched: [7:0.67] 7493 ; SANDY-NEXT: lodsw (%rsi), %ax # sched: [7:0.67] 7494 ; SANDY-NEXT: lodsl (%rsi), %eax # sched: [6:0.50] 7495 ; SANDY-NEXT: lodsq (%rsi), %rax # sched: [6:0.50] 7496 ; SANDY-NEXT: #NO_APP 7497 ; SANDY-NEXT: retq # sched: [1:1.00] 7498 ; 7499 ; HASWELL-LABEL: test_lods: 7500 ; HASWELL: # %bb.0: 7501 ; HASWELL-NEXT: #APP 7502 ; HASWELL-NEXT: lodsb (%rsi), %al # sched: [1:0.50] 7503 ; HASWELL-NEXT: lodsw (%rsi), %ax # sched: [1:0.50] 7504 ; HASWELL-NEXT: lodsl (%rsi), %eax # sched: [1:0.50] 7505 ; HASWELL-NEXT: lodsq (%rsi), %rax # sched: [1:0.50] 7506 ; HASWELL-NEXT: #NO_APP 7507 ; HASWELL-NEXT: retq # sched: [7:1.00] 7508 ; 7509 ; BROADWELL-LABEL: test_lods: 7510 ; BROADWELL: # %bb.0: 7511 ; BROADWELL-NEXT: #APP 7512 ; BROADWELL-NEXT: lodsb (%rsi), %al # sched: [100:0.25] 7513 ; BROADWELL-NEXT: lodsw (%rsi), %ax # sched: [100:0.25] 7514 ; BROADWELL-NEXT: lodsl (%rsi), %eax # sched: [100:0.25] 7515 ; BROADWELL-NEXT: lodsq (%rsi), %rax # sched: [100:0.25] 7516 ; BROADWELL-NEXT: #NO_APP 7517 ; BROADWELL-NEXT: retq # sched: [7:1.00] 7518 ; 7519 ; SKYLAKE-LABEL: test_lods: 7520 ; SKYLAKE: # %bb.0: 7521 ; SKYLAKE-NEXT: #APP 7522 ; SKYLAKE-NEXT: lodsb (%rsi), %al # sched: [100:0.25] 7523 ; SKYLAKE-NEXT: lodsw (%rsi), %ax # sched: [100:0.25] 7524 ; SKYLAKE-NEXT: lodsl (%rsi), %eax # sched: [100:0.25] 7525 ; SKYLAKE-NEXT: lodsq (%rsi), %rax # sched: [100:0.25] 7526 ; SKYLAKE-NEXT: #NO_APP 7527 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 7528 ; 7529 ; SKX-LABEL: test_lods: 7530 ; SKX: # %bb.0: 7531 ; SKX-NEXT: #APP 7532 ; SKX-NEXT: lodsb (%rsi), %al # sched: [100:0.25] 7533 ; SKX-NEXT: lodsw (%rsi), %ax # sched: [100:0.25] 7534 ; SKX-NEXT: lodsl (%rsi), %eax # sched: [100:0.25] 7535 ; SKX-NEXT: lodsq (%rsi), %rax # sched: [100:0.25] 7536 ; SKX-NEXT: #NO_APP 7537 ; SKX-NEXT: retq # sched: [7:1.00] 7538 ; 7539 ; BTVER2-LABEL: test_lods: 7540 ; BTVER2: # %bb.0: 7541 ; BTVER2-NEXT: #APP 7542 ; BTVER2-NEXT: lodsb (%rsi), %al # sched: [100:0.50] 7543 ; BTVER2-NEXT: lodsw (%rsi), %ax # sched: [100:0.50] 7544 ; BTVER2-NEXT: lodsl (%rsi), %eax # sched: [100:0.50] 7545 ; BTVER2-NEXT: lodsq (%rsi), %rax # sched: [100:0.50] 7546 ; BTVER2-NEXT: #NO_APP 7547 ; BTVER2-NEXT: retq # sched: [4:1.00] 7548 ; 7549 ; ZNVER1-LABEL: test_lods: 7550 ; ZNVER1: # %bb.0: 7551 ; ZNVER1-NEXT: #APP 7552 ; ZNVER1-NEXT: lodsb (%rsi), %al # sched: [100:0.25] 7553 ; ZNVER1-NEXT: lodsw (%rsi), %ax # sched: [100:0.25] 7554 ; ZNVER1-NEXT: lodsl (%rsi), %eax # sched: [100:0.25] 7555 ; ZNVER1-NEXT: lodsq (%rsi), %rax # sched: [100:0.25] 7556 ; ZNVER1-NEXT: #NO_APP 7557 ; ZNVER1-NEXT: retq # sched: [1:0.50] 7558 call void asm sideeffect "lodsb \0A\09 lodsw \0A\09 lodsl \0A\09 lodsq", ""() 7559 ret void 7560 } 7561 7562 define void @test_loop() optsize { 7563 ; GENERIC-LABEL: test_loop: 7564 ; GENERIC: # %bb.0: 7565 ; GENERIC-NEXT: #APP 7566 ; GENERIC-NEXT: LTGT: 7567 ; GENERIC-NEXT: loop LTGT # sched: [1:1.00] 7568 ; GENERIC-NEXT: loope LTGT # sched: [1:1.00] 7569 ; GENERIC-NEXT: loopne LTGT # sched: [1:1.00] 7570 ; GENERIC-NEXT: #NO_APP 7571 ; GENERIC-NEXT: retq # sched: [1:1.00] 7572 ; 7573 ; ATOM-LABEL: test_loop: 7574 ; ATOM: # %bb.0: 7575 ; ATOM-NEXT: #APP 7576 ; ATOM-NEXT: LTGT: 7577 ; ATOM-NEXT: loop LTGT # sched: [18:9.00] 7578 ; ATOM-NEXT: loope LTGT # sched: [8:4.00] 7579 ; ATOM-NEXT: loopne LTGT # sched: [17:8.50] 7580 ; ATOM-NEXT: #NO_APP 7581 ; ATOM-NEXT: retq # sched: [79:39.50] 7582 ; 7583 ; SLM-LABEL: test_loop: 7584 ; SLM: # %bb.0: 7585 ; SLM-NEXT: #APP 7586 ; SLM-NEXT: LTGT: 7587 ; SLM-NEXT: loop LTGT # sched: [1:1.00] 7588 ; SLM-NEXT: loope LTGT # sched: [1:1.00] 7589 ; SLM-NEXT: loopne LTGT # sched: [1:1.00] 7590 ; SLM-NEXT: #NO_APP 7591 ; SLM-NEXT: retq # sched: [4:1.00] 7592 ; 7593 ; SANDY-LABEL: test_loop: 7594 ; SANDY: # %bb.0: 7595 ; SANDY-NEXT: #APP 7596 ; SANDY-NEXT: LTGT: 7597 ; SANDY-NEXT: loop LTGT # sched: [1:1.00] 7598 ; SANDY-NEXT: loope LTGT # sched: [1:1.00] 7599 ; SANDY-NEXT: loopne LTGT # sched: [1:1.00] 7600 ; SANDY-NEXT: #NO_APP 7601 ; SANDY-NEXT: retq # sched: [1:1.00] 7602 ; 7603 ; HASWELL-LABEL: test_loop: 7604 ; HASWELL: # %bb.0: 7605 ; HASWELL-NEXT: #APP 7606 ; HASWELL-NEXT: LTGT: 7607 ; HASWELL-NEXT: loop LTGT # sched: [7:2.00] 7608 ; HASWELL-NEXT: loope LTGT # sched: [11:2.75] 7609 ; HASWELL-NEXT: loopne LTGT # sched: [11:2.75] 7610 ; HASWELL-NEXT: #NO_APP 7611 ; HASWELL-NEXT: retq # sched: [7:1.00] 7612 ; 7613 ; BROADWELL-LABEL: test_loop: 7614 ; BROADWELL: # %bb.0: 7615 ; BROADWELL-NEXT: #APP 7616 ; BROADWELL-NEXT: LTGT: 7617 ; BROADWELL-NEXT: loop LTGT # sched: [7:2.00] 7618 ; BROADWELL-NEXT: loope LTGT # sched: [11:2.75] 7619 ; BROADWELL-NEXT: loopne LTGT # sched: [11:2.75] 7620 ; BROADWELL-NEXT: #NO_APP 7621 ; BROADWELL-NEXT: retq # sched: [7:1.00] 7622 ; 7623 ; SKYLAKE-LABEL: test_loop: 7624 ; SKYLAKE: # %bb.0: 7625 ; SKYLAKE-NEXT: #APP 7626 ; SKYLAKE-NEXT: LTGT: 7627 ; SKYLAKE-NEXT: loop LTGT # sched: [7:2.00] 7628 ; SKYLAKE-NEXT: loope LTGT # sched: [11:2.75] 7629 ; SKYLAKE-NEXT: loopne LTGT # sched: [11:2.75] 7630 ; SKYLAKE-NEXT: #NO_APP 7631 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 7632 ; 7633 ; SKX-LABEL: test_loop: 7634 ; SKX: # %bb.0: 7635 ; SKX-NEXT: #APP 7636 ; SKX-NEXT: LTGT: 7637 ; SKX-NEXT: loop LTGT # sched: [7:2.00] 7638 ; SKX-NEXT: loope LTGT # sched: [11:2.75] 7639 ; SKX-NEXT: loopne LTGT # sched: [11:2.75] 7640 ; SKX-NEXT: #NO_APP 7641 ; SKX-NEXT: retq # sched: [7:1.00] 7642 ; 7643 ; BTVER2-LABEL: test_loop: 7644 ; BTVER2: # %bb.0: 7645 ; BTVER2-NEXT: #APP 7646 ; BTVER2-NEXT: LTGT: 7647 ; BTVER2-NEXT: loop LTGT # sched: [1:0.50] 7648 ; BTVER2-NEXT: loope LTGT # sched: [1:0.50] 7649 ; BTVER2-NEXT: loopne LTGT # sched: [1:0.50] 7650 ; BTVER2-NEXT: #NO_APP 7651 ; BTVER2-NEXT: retq # sched: [4:1.00] 7652 ; 7653 ; ZNVER1-LABEL: test_loop: 7654 ; ZNVER1: # %bb.0: 7655 ; ZNVER1-NEXT: #APP 7656 ; ZNVER1-NEXT: LTGT: 7657 ; ZNVER1-NEXT: loop LTGT # sched: [1:0.50] 7658 ; ZNVER1-NEXT: loope LTGT # sched: [1:0.50] 7659 ; ZNVER1-NEXT: loopne LTGT # sched: [1:0.50] 7660 ; ZNVER1-NEXT: #NO_APP 7661 ; ZNVER1-NEXT: retq # sched: [1:0.50] 7662 call void asm sideeffect "LTGT: \0A\09 loop LTGT \0A\09 loope LTGT \0A\09 loopne LTGT", ""() 7663 ret void 7664 } 7665 7666 ; TODO - test_mov 7667 7668 define void @test_movnti(i32 %a0, i32 *%a1, i64 %a2, i64 *%a3) optsize { 7669 ; GENERIC-LABEL: test_movnti: 7670 ; GENERIC: # %bb.0: 7671 ; GENERIC-NEXT: #APP 7672 ; GENERIC-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7673 ; GENERIC-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7674 ; GENERIC-NEXT: #NO_APP 7675 ; GENERIC-NEXT: retq # sched: [1:1.00] 7676 ; 7677 ; ATOM-LABEL: test_movnti: 7678 ; ATOM: # %bb.0: 7679 ; ATOM-NEXT: #APP 7680 ; ATOM-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7681 ; ATOM-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7682 ; ATOM-NEXT: #NO_APP 7683 ; ATOM-NEXT: retq # sched: [79:39.50] 7684 ; 7685 ; SLM-LABEL: test_movnti: 7686 ; SLM: # %bb.0: 7687 ; SLM-NEXT: #APP 7688 ; SLM-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7689 ; SLM-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7690 ; SLM-NEXT: #NO_APP 7691 ; SLM-NEXT: retq # sched: [4:1.00] 7692 ; 7693 ; SANDY-LABEL: test_movnti: 7694 ; SANDY: # %bb.0: 7695 ; SANDY-NEXT: #APP 7696 ; SANDY-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7697 ; SANDY-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7698 ; SANDY-NEXT: #NO_APP 7699 ; SANDY-NEXT: retq # sched: [1:1.00] 7700 ; 7701 ; HASWELL-LABEL: test_movnti: 7702 ; HASWELL: # %bb.0: 7703 ; HASWELL-NEXT: #APP 7704 ; HASWELL-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7705 ; HASWELL-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7706 ; HASWELL-NEXT: #NO_APP 7707 ; HASWELL-NEXT: retq # sched: [7:1.00] 7708 ; 7709 ; BROADWELL-LABEL: test_movnti: 7710 ; BROADWELL: # %bb.0: 7711 ; BROADWELL-NEXT: #APP 7712 ; BROADWELL-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7713 ; BROADWELL-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7714 ; BROADWELL-NEXT: #NO_APP 7715 ; BROADWELL-NEXT: retq # sched: [7:1.00] 7716 ; 7717 ; SKYLAKE-LABEL: test_movnti: 7718 ; SKYLAKE: # %bb.0: 7719 ; SKYLAKE-NEXT: #APP 7720 ; SKYLAKE-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7721 ; SKYLAKE-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7722 ; SKYLAKE-NEXT: #NO_APP 7723 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 7724 ; 7725 ; SKX-LABEL: test_movnti: 7726 ; SKX: # %bb.0: 7727 ; SKX-NEXT: #APP 7728 ; SKX-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7729 ; SKX-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7730 ; SKX-NEXT: #NO_APP 7731 ; SKX-NEXT: retq # sched: [7:1.00] 7732 ; 7733 ; BTVER2-LABEL: test_movnti: 7734 ; BTVER2: # %bb.0: 7735 ; BTVER2-NEXT: #APP 7736 ; BTVER2-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7737 ; BTVER2-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7738 ; BTVER2-NEXT: #NO_APP 7739 ; BTVER2-NEXT: retq # sched: [4:1.00] 7740 ; 7741 ; ZNVER1-LABEL: test_movnti: 7742 ; ZNVER1: # %bb.0: 7743 ; ZNVER1-NEXT: #APP 7744 ; ZNVER1-NEXT: movntil %edi, (%rsi) # sched: [1:0.50] 7745 ; ZNVER1-NEXT: movntiq %rdx, (%rcx) # sched: [1:0.50] 7746 ; ZNVER1-NEXT: #NO_APP 7747 ; ZNVER1-NEXT: retq # sched: [1:0.50] 7748 call void asm sideeffect "movnti $0, $1 \0A\09 movnti $2, $3", "r,*m,r,*m"(i32 %a0, i32 *%a1, i64 %a2, i64 *%a3) 7749 ret void 7750 } 7751 7752 define void @test_movs() optsize { 7753 ; GENERIC-LABEL: test_movs: 7754 ; GENERIC: # %bb.0: 7755 ; GENERIC-NEXT: #APP 7756 ; GENERIC-NEXT: movsb (%rsi), %es:(%rdi) # sched: [8:1.00] 7757 ; GENERIC-NEXT: movsw (%rsi), %es:(%rdi) # sched: [8:1.00] 7758 ; GENERIC-NEXT: movsl (%rsi), %es:(%rdi) # sched: [8:1.00] 7759 ; GENERIC-NEXT: movsq (%rsi), %es:(%rdi) # sched: [8:1.00] 7760 ; GENERIC-NEXT: #NO_APP 7761 ; GENERIC-NEXT: retq # sched: [1:1.00] 7762 ; 7763 ; ATOM-LABEL: test_movs: 7764 ; ATOM: # %bb.0: 7765 ; ATOM-NEXT: #APP 7766 ; ATOM-NEXT: movsb (%rsi), %es:(%rdi) # sched: [3:1.50] 7767 ; ATOM-NEXT: movsw (%rsi), %es:(%rdi) # sched: [3:1.50] 7768 ; ATOM-NEXT: movsl (%rsi), %es:(%rdi) # sched: [3:1.50] 7769 ; ATOM-NEXT: movsq (%rsi), %es:(%rdi) # sched: [3:1.50] 7770 ; ATOM-NEXT: #NO_APP 7771 ; ATOM-NEXT: retq # sched: [79:39.50] 7772 ; 7773 ; SLM-LABEL: test_movs: 7774 ; SLM: # %bb.0: 7775 ; SLM-NEXT: #APP 7776 ; SLM-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:1.00] 7777 ; SLM-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:1.00] 7778 ; SLM-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:1.00] 7779 ; SLM-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:1.00] 7780 ; SLM-NEXT: #NO_APP 7781 ; SLM-NEXT: retq # sched: [4:1.00] 7782 ; 7783 ; SANDY-LABEL: test_movs: 7784 ; SANDY: # %bb.0: 7785 ; SANDY-NEXT: #APP 7786 ; SANDY-NEXT: movsb (%rsi), %es:(%rdi) # sched: [8:1.00] 7787 ; SANDY-NEXT: movsw (%rsi), %es:(%rdi) # sched: [8:1.00] 7788 ; SANDY-NEXT: movsl (%rsi), %es:(%rdi) # sched: [8:1.00] 7789 ; SANDY-NEXT: movsq (%rsi), %es:(%rdi) # sched: [8:1.00] 7790 ; SANDY-NEXT: #NO_APP 7791 ; SANDY-NEXT: retq # sched: [1:1.00] 7792 ; 7793 ; HASWELL-LABEL: test_movs: 7794 ; HASWELL: # %bb.0: 7795 ; HASWELL-NEXT: #APP 7796 ; HASWELL-NEXT: movsb (%rsi), %es:(%rdi) # sched: [4:1.00] 7797 ; HASWELL-NEXT: movsw (%rsi), %es:(%rdi) # sched: [4:1.00] 7798 ; HASWELL-NEXT: movsl (%rsi), %es:(%rdi) # sched: [4:1.00] 7799 ; HASWELL-NEXT: movsq (%rsi), %es:(%rdi) # sched: [4:1.00] 7800 ; HASWELL-NEXT: #NO_APP 7801 ; HASWELL-NEXT: retq # sched: [7:1.00] 7802 ; 7803 ; BROADWELL-LABEL: test_movs: 7804 ; BROADWELL: # %bb.0: 7805 ; BROADWELL-NEXT: #APP 7806 ; BROADWELL-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:0.25] 7807 ; BROADWELL-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:0.25] 7808 ; BROADWELL-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:0.25] 7809 ; BROADWELL-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:0.25] 7810 ; BROADWELL-NEXT: #NO_APP 7811 ; BROADWELL-NEXT: retq # sched: [7:1.00] 7812 ; 7813 ; SKYLAKE-LABEL: test_movs: 7814 ; SKYLAKE: # %bb.0: 7815 ; SKYLAKE-NEXT: #APP 7816 ; SKYLAKE-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:0.25] 7817 ; SKYLAKE-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:0.25] 7818 ; SKYLAKE-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:0.25] 7819 ; SKYLAKE-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:0.25] 7820 ; SKYLAKE-NEXT: #NO_APP 7821 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 7822 ; 7823 ; SKX-LABEL: test_movs: 7824 ; SKX: # %bb.0: 7825 ; SKX-NEXT: #APP 7826 ; SKX-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:0.25] 7827 ; SKX-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:0.25] 7828 ; SKX-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:0.25] 7829 ; SKX-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:0.25] 7830 ; SKX-NEXT: #NO_APP 7831 ; SKX-NEXT: retq # sched: [7:1.00] 7832 ; 7833 ; BTVER2-LABEL: test_movs: 7834 ; BTVER2: # %bb.0: 7835 ; BTVER2-NEXT: #APP 7836 ; BTVER2-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:0.50] 7837 ; BTVER2-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:0.50] 7838 ; BTVER2-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:0.50] 7839 ; BTVER2-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:0.50] 7840 ; BTVER2-NEXT: #NO_APP 7841 ; BTVER2-NEXT: retq # sched: [4:1.00] 7842 ; 7843 ; ZNVER1-LABEL: test_movs: 7844 ; ZNVER1: # %bb.0: 7845 ; ZNVER1-NEXT: #APP 7846 ; ZNVER1-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:0.25] 7847 ; ZNVER1-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:0.25] 7848 ; ZNVER1-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:0.25] 7849 ; ZNVER1-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:0.25] 7850 ; ZNVER1-NEXT: #NO_APP 7851 ; ZNVER1-NEXT: retq # sched: [1:0.50] 7852 call void asm sideeffect "movsb \0A\09 movsw \0A\09 movsl \0A\09 movsq", ""() 7853 ret void 7854 } 7855 7856 ; TODO - test_movsx 7857 ; TODO - test_movzx 7858 7859 define i64 @test_movslq(i32 %a0, i32 *%a1) optsize { 7860 ; GENERIC-LABEL: test_movslq: 7861 ; GENERIC: # %bb.0: 7862 ; GENERIC-NEXT: #APP 7863 ; GENERIC-NEXT: movslq %edi, %rax # sched: [1:0.33] 7864 ; GENERIC-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7865 ; GENERIC-NEXT: #NO_APP 7866 ; GENERIC-NEXT: orq %rcx, %rax # sched: [1:0.33] 7867 ; GENERIC-NEXT: retq # sched: [1:1.00] 7868 ; 7869 ; ATOM-LABEL: test_movslq: 7870 ; ATOM: # %bb.0: 7871 ; ATOM-NEXT: #APP 7872 ; ATOM-NEXT: movslq %edi, %rax # sched: [1:1.00] 7873 ; ATOM-NEXT: movslq (%rsi), %rcx # sched: [1:1.00] 7874 ; ATOM-NEXT: #NO_APP 7875 ; ATOM-NEXT: orq %rcx, %rax # sched: [1:0.50] 7876 ; ATOM-NEXT: retq # sched: [79:39.50] 7877 ; 7878 ; SLM-LABEL: test_movslq: 7879 ; SLM: # %bb.0: 7880 ; SLM-NEXT: #APP 7881 ; SLM-NEXT: movslq %edi, %rax # sched: [1:0.50] 7882 ; SLM-NEXT: movslq (%rsi), %rcx # sched: [4:1.00] 7883 ; SLM-NEXT: #NO_APP 7884 ; SLM-NEXT: orq %rcx, %rax # sched: [1:0.50] 7885 ; SLM-NEXT: retq # sched: [4:1.00] 7886 ; 7887 ; SANDY-LABEL: test_movslq: 7888 ; SANDY: # %bb.0: 7889 ; SANDY-NEXT: #APP 7890 ; SANDY-NEXT: movslq %edi, %rax # sched: [1:0.33] 7891 ; SANDY-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7892 ; SANDY-NEXT: #NO_APP 7893 ; SANDY-NEXT: orq %rcx, %rax # sched: [1:0.33] 7894 ; SANDY-NEXT: retq # sched: [1:1.00] 7895 ; 7896 ; HASWELL-LABEL: test_movslq: 7897 ; HASWELL: # %bb.0: 7898 ; HASWELL-NEXT: #APP 7899 ; HASWELL-NEXT: movslq %edi, %rax # sched: [1:0.25] 7900 ; HASWELL-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7901 ; HASWELL-NEXT: #NO_APP 7902 ; HASWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 7903 ; HASWELL-NEXT: retq # sched: [7:1.00] 7904 ; 7905 ; BROADWELL-LABEL: test_movslq: 7906 ; BROADWELL: # %bb.0: 7907 ; BROADWELL-NEXT: #APP 7908 ; BROADWELL-NEXT: movslq %edi, %rax # sched: [1:0.25] 7909 ; BROADWELL-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7910 ; BROADWELL-NEXT: #NO_APP 7911 ; BROADWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 7912 ; BROADWELL-NEXT: retq # sched: [7:1.00] 7913 ; 7914 ; SKYLAKE-LABEL: test_movslq: 7915 ; SKYLAKE: # %bb.0: 7916 ; SKYLAKE-NEXT: #APP 7917 ; SKYLAKE-NEXT: movslq %edi, %rax # sched: [1:0.25] 7918 ; SKYLAKE-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7919 ; SKYLAKE-NEXT: #NO_APP 7920 ; SKYLAKE-NEXT: orq %rcx, %rax # sched: [1:0.25] 7921 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 7922 ; 7923 ; SKX-LABEL: test_movslq: 7924 ; SKX: # %bb.0: 7925 ; SKX-NEXT: #APP 7926 ; SKX-NEXT: movslq %edi, %rax # sched: [1:0.25] 7927 ; SKX-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7928 ; SKX-NEXT: #NO_APP 7929 ; SKX-NEXT: orq %rcx, %rax # sched: [1:0.25] 7930 ; SKX-NEXT: retq # sched: [7:1.00] 7931 ; 7932 ; BTVER2-LABEL: test_movslq: 7933 ; BTVER2: # %bb.0: 7934 ; BTVER2-NEXT: #APP 7935 ; BTVER2-NEXT: movslq %edi, %rax # sched: [1:0.50] 7936 ; BTVER2-NEXT: movslq (%rsi), %rcx # sched: [4:1.00] 7937 ; BTVER2-NEXT: #NO_APP 7938 ; BTVER2-NEXT: orq %rcx, %rax # sched: [1:0.50] 7939 ; BTVER2-NEXT: retq # sched: [4:1.00] 7940 ; 7941 ; ZNVER1-LABEL: test_movslq: 7942 ; ZNVER1: # %bb.0: 7943 ; ZNVER1-NEXT: #APP 7944 ; ZNVER1-NEXT: movslq %edi, %rax # sched: [1:0.25] 7945 ; ZNVER1-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7946 ; ZNVER1-NEXT: #NO_APP 7947 ; ZNVER1-NEXT: orq %rcx, %rax # sched: [1:0.25] 7948 ; ZNVER1-NEXT: retq # sched: [1:0.50] 7949 %1 = call { i64, i64 } asm sideeffect "movslq $2, $0 \0A\09 movslq $3, $1", "=r,=r,r,*m"(i32 %a0, i32 *%a1) 7950 %2 = extractvalue { i64, i64 } %1, 0 7951 %3 = extractvalue { i64, i64 } %1, 1 7952 %4 = or i64 %2, %3 7953 ret i64 %4 7954 } 7955 7956 define void @test_mul(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) optsize { 7957 ; GENERIC-LABEL: test_mul: 7958 ; GENERIC: # %bb.0: 7959 ; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 7960 ; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 7961 ; GENERIC-NEXT: #APP 7962 ; GENERIC-NEXT: mulb %dil # sched: [3:1.00] 7963 ; GENERIC-NEXT: mulb (%r8) # sched: [8:1.00] 7964 ; GENERIC-NEXT: mulw %si # sched: [4:1.33] 7965 ; GENERIC-NEXT: mulw (%r9) # sched: [9:1.33] 7966 ; GENERIC-NEXT: mull %edx # sched: [4:1.00] 7967 ; GENERIC-NEXT: mull (%rax) # sched: [9:1.00] 7968 ; GENERIC-NEXT: mulq %rcx # sched: [4:1.00] 7969 ; GENERIC-NEXT: mulq (%r10) # sched: [9:1.00] 7970 ; GENERIC-NEXT: #NO_APP 7971 ; GENERIC-NEXT: retq # sched: [1:1.00] 7972 ; 7973 ; ATOM-LABEL: test_mul: 7974 ; ATOM: # %bb.0: 7975 ; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [1:1.00] 7976 ; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [1:1.00] 7977 ; ATOM-NEXT: #APP 7978 ; ATOM-NEXT: mulb %dil # sched: [7:3.50] 7979 ; ATOM-NEXT: mulb (%r8) # sched: [7:3.50] 7980 ; ATOM-NEXT: mulw %si # sched: [7:3.50] 7981 ; ATOM-NEXT: mulw (%r9) # sched: [8:4.00] 7982 ; ATOM-NEXT: mull %edx # sched: [6:3.00] 7983 ; ATOM-NEXT: mull (%rax) # sched: [7:3.50] 7984 ; ATOM-NEXT: mulq %rcx # sched: [12:6.00] 7985 ; ATOM-NEXT: mulq (%r10) # sched: [12:6.00] 7986 ; ATOM-NEXT: #NO_APP 7987 ; ATOM-NEXT: retq # sched: [79:39.50] 7988 ; 7989 ; SLM-LABEL: test_mul: 7990 ; SLM: # %bb.0: 7991 ; SLM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [3:1.00] 7992 ; SLM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [3:1.00] 7993 ; SLM-NEXT: #APP 7994 ; SLM-NEXT: mulb %dil # sched: [3:1.00] 7995 ; SLM-NEXT: mulb (%r8) # sched: [6:1.00] 7996 ; SLM-NEXT: mulw %si # sched: [3:1.00] 7997 ; SLM-NEXT: mulw (%r9) # sched: [6:1.00] 7998 ; SLM-NEXT: mull %edx # sched: [3:1.00] 7999 ; SLM-NEXT: mull (%rax) # sched: [6:1.00] 8000 ; SLM-NEXT: mulq %rcx # sched: [3:1.00] 8001 ; SLM-NEXT: mulq (%r10) # sched: [6:1.00] 8002 ; SLM-NEXT: #NO_APP 8003 ; SLM-NEXT: retq # sched: [4:1.00] 8004 ; 8005 ; SANDY-LABEL: test_mul: 8006 ; SANDY: # %bb.0: 8007 ; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8008 ; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8009 ; SANDY-NEXT: #APP 8010 ; SANDY-NEXT: mulb %dil # sched: [3:1.00] 8011 ; SANDY-NEXT: mulb (%r8) # sched: [8:1.00] 8012 ; SANDY-NEXT: mulw %si # sched: [4:1.33] 8013 ; SANDY-NEXT: mulw (%r9) # sched: [9:1.33] 8014 ; SANDY-NEXT: mull %edx # sched: [4:1.00] 8015 ; SANDY-NEXT: mull (%rax) # sched: [9:1.00] 8016 ; SANDY-NEXT: mulq %rcx # sched: [4:1.00] 8017 ; SANDY-NEXT: mulq (%r10) # sched: [9:1.00] 8018 ; SANDY-NEXT: #NO_APP 8019 ; SANDY-NEXT: retq # sched: [1:1.00] 8020 ; 8021 ; HASWELL-LABEL: test_mul: 8022 ; HASWELL: # %bb.0: 8023 ; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8024 ; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8025 ; HASWELL-NEXT: #APP 8026 ; HASWELL-NEXT: mulb %dil # sched: [3:1.00] 8027 ; HASWELL-NEXT: mulb (%r8) # sched: [8:1.00] 8028 ; HASWELL-NEXT: mulw %si # sched: [4:1.00] 8029 ; HASWELL-NEXT: mulw (%r9) # sched: [9:1.00] 8030 ; HASWELL-NEXT: mull %edx # sched: [4:1.00] 8031 ; HASWELL-NEXT: mull (%rax) # sched: [9:1.00] 8032 ; HASWELL-NEXT: mulq %rcx # sched: [4:1.00] 8033 ; HASWELL-NEXT: mulq (%r10) # sched: [9:1.00] 8034 ; HASWELL-NEXT: #NO_APP 8035 ; HASWELL-NEXT: retq # sched: [7:1.00] 8036 ; 8037 ; BROADWELL-LABEL: test_mul: 8038 ; BROADWELL: # %bb.0: 8039 ; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8040 ; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8041 ; BROADWELL-NEXT: #APP 8042 ; BROADWELL-NEXT: mulb %dil # sched: [3:1.00] 8043 ; BROADWELL-NEXT: mulb (%r8) # sched: [8:1.00] 8044 ; BROADWELL-NEXT: mulw %si # sched: [4:1.00] 8045 ; BROADWELL-NEXT: mulw (%r9) # sched: [9:1.00] 8046 ; BROADWELL-NEXT: mull %edx # sched: [4:1.00] 8047 ; BROADWELL-NEXT: mull (%rax) # sched: [9:1.00] 8048 ; BROADWELL-NEXT: mulq %rcx # sched: [4:1.00] 8049 ; BROADWELL-NEXT: mulq (%r10) # sched: [9:1.00] 8050 ; BROADWELL-NEXT: #NO_APP 8051 ; BROADWELL-NEXT: retq # sched: [7:1.00] 8052 ; 8053 ; SKYLAKE-LABEL: test_mul: 8054 ; SKYLAKE: # %bb.0: 8055 ; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8056 ; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8057 ; SKYLAKE-NEXT: #APP 8058 ; SKYLAKE-NEXT: mulb %dil # sched: [3:1.00] 8059 ; SKYLAKE-NEXT: mulb (%r8) # sched: [8:1.00] 8060 ; SKYLAKE-NEXT: mulw %si # sched: [4:1.00] 8061 ; SKYLAKE-NEXT: mulw (%r9) # sched: [9:1.00] 8062 ; SKYLAKE-NEXT: mull %edx # sched: [4:1.00] 8063 ; SKYLAKE-NEXT: mull (%rax) # sched: [9:1.00] 8064 ; SKYLAKE-NEXT: mulq %rcx # sched: [4:1.00] 8065 ; SKYLAKE-NEXT: mulq (%r10) # sched: [9:1.00] 8066 ; SKYLAKE-NEXT: #NO_APP 8067 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 8068 ; 8069 ; SKX-LABEL: test_mul: 8070 ; SKX: # %bb.0: 8071 ; SKX-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8072 ; SKX-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8073 ; SKX-NEXT: #APP 8074 ; SKX-NEXT: mulb %dil # sched: [3:1.00] 8075 ; SKX-NEXT: mulb (%r8) # sched: [8:1.00] 8076 ; SKX-NEXT: mulw %si # sched: [4:1.00] 8077 ; SKX-NEXT: mulw (%r9) # sched: [9:1.00] 8078 ; SKX-NEXT: mull %edx # sched: [4:1.00] 8079 ; SKX-NEXT: mull (%rax) # sched: [9:1.00] 8080 ; SKX-NEXT: mulq %rcx # sched: [4:1.00] 8081 ; SKX-NEXT: mulq (%r10) # sched: [9:1.00] 8082 ; SKX-NEXT: #NO_APP 8083 ; SKX-NEXT: retq # sched: [7:1.00] 8084 ; 8085 ; BTVER2-LABEL: test_mul: 8086 ; BTVER2: # %bb.0: 8087 ; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:1.00] 8088 ; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:1.00] 8089 ; BTVER2-NEXT: #APP 8090 ; BTVER2-NEXT: mulb %dil # sched: [3:1.00] 8091 ; BTVER2-NEXT: mulb (%r8) # sched: [6:1.00] 8092 ; BTVER2-NEXT: mulw %si # sched: [3:1.00] 8093 ; BTVER2-NEXT: mulw (%r9) # sched: [6:1.00] 8094 ; BTVER2-NEXT: mull %edx # sched: [3:1.00] 8095 ; BTVER2-NEXT: mull (%rax) # sched: [6:1.00] 8096 ; BTVER2-NEXT: mulq %rcx # sched: [6:4.00] 8097 ; BTVER2-NEXT: mulq (%r10) # sched: [9:4.00] 8098 ; BTVER2-NEXT: #NO_APP 8099 ; BTVER2-NEXT: retq # sched: [4:1.00] 8100 ; 8101 ; ZNVER1-LABEL: test_mul: 8102 ; ZNVER1: # %bb.0: 8103 ; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [8:0.50] 8104 ; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [8:0.50] 8105 ; ZNVER1-NEXT: #APP 8106 ; ZNVER1-NEXT: mulb %dil # sched: [4:1.00] 8107 ; ZNVER1-NEXT: mulb (%r8) # sched: [8:1.00] 8108 ; ZNVER1-NEXT: mulw %si # sched: [3:1.00] 8109 ; ZNVER1-NEXT: mulw (%r9) # sched: [8:1.00] 8110 ; ZNVER1-NEXT: mull %edx # sched: [3:1.00] 8111 ; ZNVER1-NEXT: mull (%rax) # sched: [8:1.00] 8112 ; ZNVER1-NEXT: mulq %rcx # sched: [4:1.00] 8113 ; ZNVER1-NEXT: mulq (%r10) # sched: [9:1.00] 8114 ; ZNVER1-NEXT: #NO_APP 8115 ; ZNVER1-NEXT: retq # sched: [1:0.50] 8116 tail call void asm "mulb $0 \0A\09 mulb $4 \0A\09 mulw $1 \0A\09 mulw $5 \0A\09 mull $2 \0A\09 mull $6 \0A\09 mulq $3 \0A\09 mulq $7", "r,r,r,r,*m,*m,*m,*m"(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) nounwind 8117 ret void 8118 } 8119 8120 define void @test_neg(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) optsize { 8121 ; GENERIC-LABEL: test_neg: 8122 ; GENERIC: # %bb.0: 8123 ; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8124 ; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8125 ; GENERIC-NEXT: #APP 8126 ; GENERIC-NEXT: negb %dil # sched: [1:0.33] 8127 ; GENERIC-NEXT: negb (%r8) # sched: [7:1.00] 8128 ; GENERIC-NEXT: negw %si # sched: [1:0.33] 8129 ; GENERIC-NEXT: negw (%r9) # sched: [7:1.00] 8130 ; GENERIC-NEXT: negl %edx # sched: [1:0.33] 8131 ; GENERIC-NEXT: negl (%rax) # sched: [7:1.00] 8132 ; GENERIC-NEXT: negq %rcx # sched: [1:0.33] 8133 ; GENERIC-NEXT: negq (%r10) # sched: [7:1.00] 8134 ; GENERIC-NEXT: #NO_APP 8135 ; GENERIC-NEXT: retq # sched: [1:1.00] 8136 ; 8137 ; ATOM-LABEL: test_neg: 8138 ; ATOM: # %bb.0: 8139 ; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [1:1.00] 8140 ; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [1:1.00] 8141 ; ATOM-NEXT: #APP 8142 ; ATOM-NEXT: negb %dil # sched: [1:0.50] 8143 ; ATOM-NEXT: negb (%r8) # sched: [1:1.00] 8144 ; ATOM-NEXT: negw %si # sched: [1:0.50] 8145 ; ATOM-NEXT: negw (%r9) # sched: [1:1.00] 8146 ; ATOM-NEXT: negl %edx # sched: [1:0.50] 8147 ; ATOM-NEXT: negl (%rax) # sched: [1:1.00] 8148 ; ATOM-NEXT: negq %rcx # sched: [1:0.50] 8149 ; ATOM-NEXT: negq (%r10) # sched: [1:1.00] 8150 ; ATOM-NEXT: #NO_APP 8151 ; ATOM-NEXT: retq # sched: [79:39.50] 8152 ; 8153 ; SLM-LABEL: test_neg: 8154 ; SLM: # %bb.0: 8155 ; SLM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [3:1.00] 8156 ; SLM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [3:1.00] 8157 ; SLM-NEXT: #APP 8158 ; SLM-NEXT: negb %dil # sched: [1:0.50] 8159 ; SLM-NEXT: negb (%r8) # sched: [5:2.00] 8160 ; SLM-NEXT: negw %si # sched: [1:0.50] 8161 ; SLM-NEXT: negw (%r9) # sched: [5:2.00] 8162 ; SLM-NEXT: negl %edx # sched: [1:0.50] 8163 ; SLM-NEXT: negl (%rax) # sched: [5:2.00] 8164 ; SLM-NEXT: negq %rcx # sched: [1:0.50] 8165 ; SLM-NEXT: negq (%r10) # sched: [5:2.00] 8166 ; SLM-NEXT: #NO_APP 8167 ; SLM-NEXT: retq # sched: [4:1.00] 8168 ; 8169 ; SANDY-LABEL: test_neg: 8170 ; SANDY: # %bb.0: 8171 ; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8172 ; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8173 ; SANDY-NEXT: #APP 8174 ; SANDY-NEXT: negb %dil # sched: [1:0.33] 8175 ; SANDY-NEXT: negb (%r8) # sched: [7:1.00] 8176 ; SANDY-NEXT: negw %si # sched: [1:0.33] 8177 ; SANDY-NEXT: negw (%r9) # sched: [7:1.00] 8178 ; SANDY-NEXT: negl %edx # sched: [1:0.33] 8179 ; SANDY-NEXT: negl (%rax) # sched: [7:1.00] 8180 ; SANDY-NEXT: negq %rcx # sched: [1:0.33] 8181 ; SANDY-NEXT: negq (%r10) # sched: [7:1.00] 8182 ; SANDY-NEXT: #NO_APP 8183 ; SANDY-NEXT: retq # sched: [1:1.00] 8184 ; 8185 ; HASWELL-LABEL: test_neg: 8186 ; HASWELL: # %bb.0: 8187 ; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8188 ; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8189 ; HASWELL-NEXT: #APP 8190 ; HASWELL-NEXT: negb %dil # sched: [1:0.25] 8191 ; HASWELL-NEXT: negb (%r8) # sched: [7:1.00] 8192 ; HASWELL-NEXT: negw %si # sched: [1:0.25] 8193 ; HASWELL-NEXT: negw (%r9) # sched: [7:1.00] 8194 ; HASWELL-NEXT: negl %edx # sched: [1:0.25] 8195 ; HASWELL-NEXT: negl (%rax) # sched: [7:1.00] 8196 ; HASWELL-NEXT: negq %rcx # sched: [1:0.25] 8197 ; HASWELL-NEXT: negq (%r10) # sched: [7:1.00] 8198 ; HASWELL-NEXT: #NO_APP 8199 ; HASWELL-NEXT: retq # sched: [7:1.00] 8200 ; 8201 ; BROADWELL-LABEL: test_neg: 8202 ; BROADWELL: # %bb.0: 8203 ; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8204 ; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8205 ; BROADWELL-NEXT: #APP 8206 ; BROADWELL-NEXT: negb %dil # sched: [1:0.25] 8207 ; BROADWELL-NEXT: negb (%r8) # sched: [7:1.00] 8208 ; BROADWELL-NEXT: negw %si # sched: [1:0.25] 8209 ; BROADWELL-NEXT: negw (%r9) # sched: [7:1.00] 8210 ; BROADWELL-NEXT: negl %edx # sched: [1:0.25] 8211 ; BROADWELL-NEXT: negl (%rax) # sched: [7:1.00] 8212 ; BROADWELL-NEXT: negq %rcx # sched: [1:0.25] 8213 ; BROADWELL-NEXT: negq (%r10) # sched: [7:1.00] 8214 ; BROADWELL-NEXT: #NO_APP 8215 ; BROADWELL-NEXT: retq # sched: [7:1.00] 8216 ; 8217 ; SKYLAKE-LABEL: test_neg: 8218 ; SKYLAKE: # %bb.0: 8219 ; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8220 ; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8221 ; SKYLAKE-NEXT: #APP 8222 ; SKYLAKE-NEXT: negb %dil # sched: [1:0.25] 8223 ; SKYLAKE-NEXT: negb (%r8) # sched: [7:1.00] 8224 ; SKYLAKE-NEXT: negw %si # sched: [1:0.25] 8225 ; SKYLAKE-NEXT: negw (%r9) # sched: [7:1.00] 8226 ; SKYLAKE-NEXT: negl %edx # sched: [1:0.25] 8227 ; SKYLAKE-NEXT: negl (%rax) # sched: [7:1.00] 8228 ; SKYLAKE-NEXT: negq %rcx # sched: [1:0.25] 8229 ; SKYLAKE-NEXT: negq (%r10) # sched: [7:1.00] 8230 ; SKYLAKE-NEXT: #NO_APP 8231 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 8232 ; 8233 ; SKX-LABEL: test_neg: 8234 ; SKX: # %bb.0: 8235 ; SKX-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8236 ; SKX-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8237 ; SKX-NEXT: #APP 8238 ; SKX-NEXT: negb %dil # sched: [1:0.25] 8239 ; SKX-NEXT: negb (%r8) # sched: [7:1.00] 8240 ; SKX-NEXT: negw %si # sched: [1:0.25] 8241 ; SKX-NEXT: negw (%r9) # sched: [7:1.00] 8242 ; SKX-NEXT: negl %edx # sched: [1:0.25] 8243 ; SKX-NEXT: negl (%rax) # sched: [7:1.00] 8244 ; SKX-NEXT: negq %rcx # sched: [1:0.25] 8245 ; SKX-NEXT: negq (%r10) # sched: [7:1.00] 8246 ; SKX-NEXT: #NO_APP 8247 ; SKX-NEXT: retq # sched: [7:1.00] 8248 ; 8249 ; BTVER2-LABEL: test_neg: 8250 ; BTVER2: # %bb.0: 8251 ; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:1.00] 8252 ; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:1.00] 8253 ; BTVER2-NEXT: #APP 8254 ; BTVER2-NEXT: negb %dil # sched: [1:0.50] 8255 ; BTVER2-NEXT: negb (%r8) # sched: [5:1.00] 8256 ; BTVER2-NEXT: negw %si # sched: [1:0.50] 8257 ; BTVER2-NEXT: negw (%r9) # sched: [5:1.00] 8258 ; BTVER2-NEXT: negl %edx # sched: [1:0.50] 8259 ; BTVER2-NEXT: negl (%rax) # sched: [5:1.00] 8260 ; BTVER2-NEXT: negq %rcx # sched: [1:0.50] 8261 ; BTVER2-NEXT: negq (%r10) # sched: [5:1.00] 8262 ; BTVER2-NEXT: #NO_APP 8263 ; BTVER2-NEXT: retq # sched: [4:1.00] 8264 ; 8265 ; ZNVER1-LABEL: test_neg: 8266 ; ZNVER1: # %bb.0: 8267 ; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [8:0.50] 8268 ; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [8:0.50] 8269 ; ZNVER1-NEXT: #APP 8270 ; ZNVER1-NEXT: negb %dil # sched: [1:0.25] 8271 ; ZNVER1-NEXT: negb (%r8) # sched: [5:0.50] 8272 ; ZNVER1-NEXT: negw %si # sched: [1:0.25] 8273 ; ZNVER1-NEXT: negw (%r9) # sched: [5:0.50] 8274 ; ZNVER1-NEXT: negl %edx # sched: [1:0.25] 8275 ; ZNVER1-NEXT: negl (%rax) # sched: [5:0.50] 8276 ; ZNVER1-NEXT: negq %rcx # sched: [1:0.25] 8277 ; ZNVER1-NEXT: negq (%r10) # sched: [5:0.50] 8278 ; ZNVER1-NEXT: #NO_APP 8279 ; ZNVER1-NEXT: retq # sched: [1:0.50] 8280 tail call void asm "negb $0 \0A\09 negb $4 \0A\09 negw $1 \0A\09 negw $5 \0A\09 negl $2 \0A\09 negl $6 \0A\09 negq $3 \0A\09 negq $7", "r,r,r,r,*m,*m,*m,*m"(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) nounwind 8281 ret void 8282 } 8283 8284 define void @test_nop(i16 %a0, i32 %a1, i64 %a2, i16 *%p0, i32 *%p1, i64 *%p2) optsize { 8285 ; GENERIC-LABEL: test_nop: 8286 ; GENERIC: # %bb.0: 8287 ; GENERIC-NEXT: #APP 8288 ; GENERIC-NEXT: nop # sched: [1:0.25] 8289 ; GENERIC-NEXT: nopw %di # sched: [1:0.25] 8290 ; GENERIC-NEXT: nopw (%rcx) # sched: [1:0.25] 8291 ; GENERIC-NEXT: nopl %esi # sched: [1:0.25] 8292 ; GENERIC-NEXT: nopl (%r8) # sched: [1:0.25] 8293 ; GENERIC-NEXT: nopq %rdx # sched: [1:0.25] 8294 ; GENERIC-NEXT: nopq (%r9) # sched: [1:0.25] 8295 ; GENERIC-NEXT: #NO_APP 8296 ; GENERIC-NEXT: retq # sched: [1:1.00] 8297 ; 8298 ; ATOM-LABEL: test_nop: 8299 ; ATOM: # %bb.0: 8300 ; ATOM-NEXT: #APP 8301 ; ATOM-NEXT: nop # sched: [1:0.50] 8302 ; ATOM-NEXT: nopw %di # sched: [1:0.50] 8303 ; ATOM-NEXT: nopw (%rcx) # sched: [1:0.50] 8304 ; ATOM-NEXT: nopl %esi # sched: [1:0.50] 8305 ; ATOM-NEXT: nopl (%r8) # sched: [1:0.50] 8306 ; ATOM-NEXT: nopq %rdx # sched: [1:0.50] 8307 ; ATOM-NEXT: nopq (%r9) # sched: [1:0.50] 8308 ; ATOM-NEXT: #NO_APP 8309 ; ATOM-NEXT: retq # sched: [79:39.50] 8310 ; 8311 ; SLM-LABEL: test_nop: 8312 ; SLM: # %bb.0: 8313 ; SLM-NEXT: #APP 8314 ; SLM-NEXT: nop # sched: [1:0.50] 8315 ; SLM-NEXT: nopw %di # sched: [1:0.50] 8316 ; SLM-NEXT: nopw (%rcx) # sched: [1:0.50] 8317 ; SLM-NEXT: nopl %esi # sched: [1:0.50] 8318 ; SLM-NEXT: nopl (%r8) # sched: [1:0.50] 8319 ; SLM-NEXT: nopq %rdx # sched: [1:0.50] 8320 ; SLM-NEXT: nopq (%r9) # sched: [1:0.50] 8321 ; SLM-NEXT: #NO_APP 8322 ; SLM-NEXT: retq # sched: [4:1.00] 8323 ; 8324 ; SANDY-LABEL: test_nop: 8325 ; SANDY: # %bb.0: 8326 ; SANDY-NEXT: #APP 8327 ; SANDY-NEXT: nop # sched: [1:0.25] 8328 ; SANDY-NEXT: nopw %di # sched: [1:0.25] 8329 ; SANDY-NEXT: nopw (%rcx) # sched: [1:0.25] 8330 ; SANDY-NEXT: nopl %esi # sched: [1:0.25] 8331 ; SANDY-NEXT: nopl (%r8) # sched: [1:0.25] 8332 ; SANDY-NEXT: nopq %rdx # sched: [1:0.25] 8333 ; SANDY-NEXT: nopq (%r9) # sched: [1:0.25] 8334 ; SANDY-NEXT: #NO_APP 8335 ; SANDY-NEXT: retq # sched: [1:1.00] 8336 ; 8337 ; HASWELL-LABEL: test_nop: 8338 ; HASWELL: # %bb.0: 8339 ; HASWELL-NEXT: #APP 8340 ; HASWELL-NEXT: nop # sched: [1:0.25] 8341 ; HASWELL-NEXT: nopw %di # sched: [1:0.25] 8342 ; HASWELL-NEXT: nopw (%rcx) # sched: [1:0.25] 8343 ; HASWELL-NEXT: nopl %esi # sched: [1:0.25] 8344 ; HASWELL-NEXT: nopl (%r8) # sched: [1:0.25] 8345 ; HASWELL-NEXT: nopq %rdx # sched: [1:0.25] 8346 ; HASWELL-NEXT: nopq (%r9) # sched: [1:0.25] 8347 ; HASWELL-NEXT: #NO_APP 8348 ; HASWELL-NEXT: retq # sched: [7:1.00] 8349 ; 8350 ; BROADWELL-LABEL: test_nop: 8351 ; BROADWELL: # %bb.0: 8352 ; BROADWELL-NEXT: #APP 8353 ; BROADWELL-NEXT: nop # sched: [1:0.25] 8354 ; BROADWELL-NEXT: nopw %di # sched: [1:0.25] 8355 ; BROADWELL-NEXT: nopw (%rcx) # sched: [1:0.25] 8356 ; BROADWELL-NEXT: nopl %esi # sched: [1:0.25] 8357 ; BROADWELL-NEXT: nopl (%r8) # sched: [1:0.25] 8358 ; BROADWELL-NEXT: nopq %rdx # sched: [1:0.25] 8359 ; BROADWELL-NEXT: nopq (%r9) # sched: [1:0.25] 8360 ; BROADWELL-NEXT: #NO_APP 8361 ; BROADWELL-NEXT: retq # sched: [7:1.00] 8362 ; 8363 ; SKYLAKE-LABEL: test_nop: 8364 ; SKYLAKE: # %bb.0: 8365 ; SKYLAKE-NEXT: #APP 8366 ; SKYLAKE-NEXT: nop # sched: [1:0.17] 8367 ; SKYLAKE-NEXT: nopw %di # sched: [1:0.17] 8368 ; SKYLAKE-NEXT: nopw (%rcx) # sched: [1:0.17] 8369 ; SKYLAKE-NEXT: nopl %esi # sched: [1:0.17] 8370 ; SKYLAKE-NEXT: nopl (%r8) # sched: [1:0.17] 8371 ; SKYLAKE-NEXT: nopq %rdx # sched: [1:0.17] 8372 ; SKYLAKE-NEXT: nopq (%r9) # sched: [1:0.17] 8373 ; SKYLAKE-NEXT: #NO_APP 8374 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 8375 ; 8376 ; SKX-LABEL: test_nop: 8377 ; SKX: # %bb.0: 8378 ; SKX-NEXT: #APP 8379 ; SKX-NEXT: nop # sched: [1:0.17] 8380 ; SKX-NEXT: nopw %di # sched: [1:0.17] 8381 ; SKX-NEXT: nopw (%rcx) # sched: [1:0.17] 8382 ; SKX-NEXT: nopl %esi # sched: [1:0.17] 8383 ; SKX-NEXT: nopl (%r8) # sched: [1:0.17] 8384 ; SKX-NEXT: nopq %rdx # sched: [1:0.17] 8385 ; SKX-NEXT: nopq (%r9) # sched: [1:0.17] 8386 ; SKX-NEXT: #NO_APP 8387 ; SKX-NEXT: retq # sched: [7:1.00] 8388 ; 8389 ; BTVER2-LABEL: test_nop: 8390 ; BTVER2: # %bb.0: 8391 ; BTVER2-NEXT: #APP 8392 ; BTVER2-NEXT: nop # sched: [1:0.50] 8393 ; BTVER2-NEXT: nopw %di # sched: [1:0.50] 8394 ; BTVER2-NEXT: nopw (%rcx) # sched: [1:0.50] 8395 ; BTVER2-NEXT: nopl %esi # sched: [1:0.50] 8396 ; BTVER2-NEXT: nopl (%r8) # sched: [1:0.50] 8397 ; BTVER2-NEXT: nopq %rdx # sched: [1:0.50] 8398 ; BTVER2-NEXT: nopq (%r9) # sched: [1:0.50] 8399 ; BTVER2-NEXT: #NO_APP 8400 ; BTVER2-NEXT: retq # sched: [4:1.00] 8401 ; 8402 ; ZNVER1-LABEL: test_nop: 8403 ; ZNVER1: # %bb.0: 8404 ; ZNVER1-NEXT: #APP 8405 ; ZNVER1-NEXT: nop # sched: [1:0.25] 8406 ; ZNVER1-NEXT: nopw %di # sched: [1:0.25] 8407 ; ZNVER1-NEXT: nopw (%rcx) # sched: [1:0.25] 8408 ; ZNVER1-NEXT: nopl %esi # sched: [1:0.25] 8409 ; ZNVER1-NEXT: nopl (%r8) # sched: [1:0.25] 8410 ; ZNVER1-NEXT: nopq %rdx # sched: [1:0.25] 8411 ; ZNVER1-NEXT: nopq (%r9) # sched: [1:0.25] 8412 ; ZNVER1-NEXT: #NO_APP 8413 ; ZNVER1-NEXT: retq # sched: [1:0.50] 8414 tail call void asm "nop \0A\09 nopw $0 \0A\09 nopw $3 \0A\09 nopl $1 \0A\09 nopl $4 \0A\09 nopq $2 \0A\09 nopq $5", "r,r,r,*m,*m,*m"(i16 %a0, i32 %a1, i64 %a2, i16 *%p0, i32 *%p1, i64 *%p2) nounwind 8415 ret void 8416 } 8417 8418 define void @test_not(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) optsize { 8419 ; GENERIC-LABEL: test_not: 8420 ; GENERIC: # %bb.0: 8421 ; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8422 ; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8423 ; GENERIC-NEXT: #APP 8424 ; GENERIC-NEXT: notb %dil # sched: [1:0.33] 8425 ; GENERIC-NEXT: notb (%r8) # sched: [7:1.00] 8426 ; GENERIC-NEXT: notw %si # sched: [1:0.33] 8427 ; GENERIC-NEXT: notw (%r9) # sched: [7:1.00] 8428 ; GENERIC-NEXT: notl %edx # sched: [1:0.33] 8429 ; GENERIC-NEXT: notl (%rax) # sched: [7:1.00] 8430 ; GENERIC-NEXT: notq %rcx # sched: [1:0.33] 8431 ; GENERIC-NEXT: notq (%r10) # sched: [7:1.00] 8432 ; GENERIC-NEXT: #NO_APP 8433 ; GENERIC-NEXT: retq # sched: [1:1.00] 8434 ; 8435 ; ATOM-LABEL: test_not: 8436 ; ATOM: # %bb.0: 8437 ; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [1:1.00] 8438 ; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [1:1.00] 8439 ; ATOM-NEXT: #APP 8440 ; ATOM-NEXT: notb %dil # sched: [1:0.50] 8441 ; ATOM-NEXT: notb (%r8) # sched: [1:1.00] 8442 ; ATOM-NEXT: notw %si # sched: [1:0.50] 8443 ; ATOM-NEXT: notw (%r9) # sched: [1:1.00] 8444 ; ATOM-NEXT: notl %edx # sched: [1:0.50] 8445 ; ATOM-NEXT: notl (%rax) # sched: [1:1.00] 8446 ; ATOM-NEXT: notq %rcx # sched: [1:0.50] 8447 ; ATOM-NEXT: notq (%r10) # sched: [1:1.00] 8448 ; ATOM-NEXT: #NO_APP 8449 ; ATOM-NEXT: retq # sched: [79:39.50] 8450 ; 8451 ; SLM-LABEL: test_not: 8452 ; SLM: # %bb.0: 8453 ; SLM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [3:1.00] 8454 ; SLM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [3:1.00] 8455 ; SLM-NEXT: #APP 8456 ; SLM-NEXT: notb %dil # sched: [1:0.50] 8457 ; SLM-NEXT: notb (%r8) # sched: [5:2.00] 8458 ; SLM-NEXT: notw %si # sched: [1:0.50] 8459 ; SLM-NEXT: notw (%r9) # sched: [5:2.00] 8460 ; SLM-NEXT: notl %edx # sched: [1:0.50] 8461 ; SLM-NEXT: notl (%rax) # sched: [5:2.00] 8462 ; SLM-NEXT: notq %rcx # sched: [1:0.50] 8463 ; SLM-NEXT: notq (%r10) # sched: [5:2.00] 8464 ; SLM-NEXT: #NO_APP 8465 ; SLM-NEXT: retq # sched: [4:1.00] 8466 ; 8467 ; SANDY-LABEL: test_not: 8468 ; SANDY: # %bb.0: 8469 ; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8470 ; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8471 ; SANDY-NEXT: #APP 8472 ; SANDY-NEXT: notb %dil # sched: [1:0.33] 8473 ; SANDY-NEXT: notb (%r8) # sched: [7:1.00] 8474 ; SANDY-NEXT: notw %si # sched: [1:0.33] 8475 ; SANDY-NEXT: notw (%r9) # sched: [7:1.00] 8476 ; SANDY-NEXT: notl %edx # sched: [1:0.33] 8477 ; SANDY-NEXT: notl (%rax) # sched: [7:1.00] 8478 ; SANDY-NEXT: notq %rcx # sched: [1:0.33] 8479 ; SANDY-NEXT: notq (%r10) # sched: [7:1.00] 8480 ; SANDY-NEXT: #NO_APP 8481 ; SANDY-NEXT: retq # sched: [1:1.00] 8482 ; 8483 ; HASWELL-LABEL: test_not: 8484 ; HASWELL: # %bb.0: 8485 ; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8486 ; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8487 ; HASWELL-NEXT: #APP 8488 ; HASWELL-NEXT: notb %dil # sched: [1:0.25] 8489 ; HASWELL-NEXT: notb (%r8) # sched: [7:1.00] 8490 ; HASWELL-NEXT: notw %si # sched: [1:0.25] 8491 ; HASWELL-NEXT: notw (%r9) # sched: [7:1.00] 8492 ; HASWELL-NEXT: notl %edx # sched: [1:0.25] 8493 ; HASWELL-NEXT: notl (%rax) # sched: [7:1.00] 8494 ; HASWELL-NEXT: notq %rcx # sched: [1:0.25] 8495 ; HASWELL-NEXT: notq (%r10) # sched: [7:1.00] 8496 ; HASWELL-NEXT: #NO_APP 8497 ; HASWELL-NEXT: retq # sched: [7:1.00] 8498 ; 8499 ; BROADWELL-LABEL: test_not: 8500 ; BROADWELL: # %bb.0: 8501 ; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8502 ; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8503 ; BROADWELL-NEXT: #APP 8504 ; BROADWELL-NEXT: notb %dil # sched: [1:0.25] 8505 ; BROADWELL-NEXT: notb (%r8) # sched: [7:1.00] 8506 ; BROADWELL-NEXT: notw %si # sched: [1:0.25] 8507 ; BROADWELL-NEXT: notw (%r9) # sched: [7:1.00] 8508 ; BROADWELL-NEXT: notl %edx # sched: [1:0.25] 8509 ; BROADWELL-NEXT: notl (%rax) # sched: [7:1.00] 8510 ; BROADWELL-NEXT: notq %rcx # sched: [1:0.25] 8511 ; BROADWELL-NEXT: notq (%r10) # sched: [7:1.00] 8512 ; BROADWELL-NEXT: #NO_APP 8513 ; BROADWELL-NEXT: retq # sched: [7:1.00] 8514 ; 8515 ; SKYLAKE-LABEL: test_not: 8516 ; SKYLAKE: # %bb.0: 8517 ; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8518 ; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8519 ; SKYLAKE-NEXT: #APP 8520 ; SKYLAKE-NEXT: notb %dil # sched: [1:0.25] 8521 ; SKYLAKE-NEXT: notb (%r8) # sched: [7:1.00] 8522 ; SKYLAKE-NEXT: notw %si # sched: [1:0.25] 8523 ; SKYLAKE-NEXT: notw (%r9) # sched: [7:1.00] 8524 ; SKYLAKE-NEXT: notl %edx # sched: [1:0.25] 8525 ; SKYLAKE-NEXT: notl (%rax) # sched: [7:1.00] 8526 ; SKYLAKE-NEXT: notq %rcx # sched: [1:0.25] 8527 ; SKYLAKE-NEXT: notq (%r10) # sched: [7:1.00] 8528 ; SKYLAKE-NEXT: #NO_APP 8529 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 8530 ; 8531 ; SKX-LABEL: test_not: 8532 ; SKX: # %bb.0: 8533 ; SKX-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8534 ; SKX-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8535 ; SKX-NEXT: #APP 8536 ; SKX-NEXT: notb %dil # sched: [1:0.25] 8537 ; SKX-NEXT: notb (%r8) # sched: [7:1.00] 8538 ; SKX-NEXT: notw %si # sched: [1:0.25] 8539 ; SKX-NEXT: notw (%r9) # sched: [7:1.00] 8540 ; SKX-NEXT: notl %edx # sched: [1:0.25] 8541 ; SKX-NEXT: notl (%rax) # sched: [7:1.00] 8542 ; SKX-NEXT: notq %rcx # sched: [1:0.25] 8543 ; SKX-NEXT: notq (%r10) # sched: [7:1.00] 8544 ; SKX-NEXT: #NO_APP 8545 ; SKX-NEXT: retq # sched: [7:1.00] 8546 ; 8547 ; BTVER2-LABEL: test_not: 8548 ; BTVER2: # %bb.0: 8549 ; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:1.00] 8550 ; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:1.00] 8551 ; BTVER2-NEXT: #APP 8552 ; BTVER2-NEXT: notb %dil # sched: [1:0.50] 8553 ; BTVER2-NEXT: notb (%r8) # sched: [5:1.00] 8554 ; BTVER2-NEXT: notw %si # sched: [1:0.50] 8555 ; BTVER2-NEXT: notw (%r9) # sched: [5:1.00] 8556 ; BTVER2-NEXT: notl %edx # sched: [1:0.50] 8557 ; BTVER2-NEXT: notl (%rax) # sched: [5:1.00] 8558 ; BTVER2-NEXT: notq %rcx # sched: [1:0.50] 8559 ; BTVER2-NEXT: notq (%r10) # sched: [5:1.00] 8560 ; BTVER2-NEXT: #NO_APP 8561 ; BTVER2-NEXT: retq # sched: [4:1.00] 8562 ; 8563 ; ZNVER1-LABEL: test_not: 8564 ; ZNVER1: # %bb.0: 8565 ; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [8:0.50] 8566 ; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [8:0.50] 8567 ; ZNVER1-NEXT: #APP 8568 ; ZNVER1-NEXT: notb %dil # sched: [1:0.25] 8569 ; ZNVER1-NEXT: notb (%r8) # sched: [5:0.50] 8570 ; ZNVER1-NEXT: notw %si # sched: [1:0.25] 8571 ; ZNVER1-NEXT: notw (%r9) # sched: [5:0.50] 8572 ; ZNVER1-NEXT: notl %edx # sched: [1:0.25] 8573 ; ZNVER1-NEXT: notl (%rax) # sched: [5:0.50] 8574 ; ZNVER1-NEXT: notq %rcx # sched: [1:0.25] 8575 ; ZNVER1-NEXT: notq (%r10) # sched: [5:0.50] 8576 ; ZNVER1-NEXT: #NO_APP 8577 ; ZNVER1-NEXT: retq # sched: [1:0.50] 8578 tail call void asm "notb $0 \0A\09 notb $4 \0A\09 notw $1 \0A\09 notw $5 \0A\09 notl $2 \0A\09 notl $6 \0A\09 notq $3 \0A\09 notq $7", "r,r,r,r,*m,*m,*m,*m"(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) nounwind 8579 ret void 8580 } 8581 8582 define void @test_or_8(i8 %a0, i8* %a1, i8 %a2) optsize { 8583 ; GENERIC-LABEL: test_or_8: 8584 ; GENERIC: # %bb.0: 8585 ; GENERIC-NEXT: #APP 8586 ; GENERIC-NEXT: orb $7, %al # sched: [1:0.33] 8587 ; GENERIC-NEXT: orb $7, %dil # sched: [1:0.33] 8588 ; GENERIC-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8589 ; GENERIC-NEXT: orb %dl, %dil # sched: [1:0.33] 8590 ; GENERIC-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8591 ; GENERIC-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8592 ; GENERIC-NEXT: #NO_APP 8593 ; GENERIC-NEXT: retq # sched: [1:1.00] 8594 ; 8595 ; ATOM-LABEL: test_or_8: 8596 ; ATOM: # %bb.0: 8597 ; ATOM-NEXT: #APP 8598 ; ATOM-NEXT: orb $7, %al # sched: [1:0.50] 8599 ; ATOM-NEXT: orb $7, %dil # sched: [1:0.50] 8600 ; ATOM-NEXT: orb $7, (%rsi) # sched: [1:1.00] 8601 ; ATOM-NEXT: orb %dl, %dil # sched: [1:0.50] 8602 ; ATOM-NEXT: orb %dil, (%rsi) # sched: [1:1.00] 8603 ; ATOM-NEXT: orb (%rsi), %dil # sched: [1:1.00] 8604 ; ATOM-NEXT: #NO_APP 8605 ; ATOM-NEXT: retq # sched: [79:39.50] 8606 ; 8607 ; SLM-LABEL: test_or_8: 8608 ; SLM: # %bb.0: 8609 ; SLM-NEXT: #APP 8610 ; SLM-NEXT: orb $7, %al # sched: [1:0.50] 8611 ; SLM-NEXT: orb $7, %dil # sched: [1:0.50] 8612 ; SLM-NEXT: orb $7, (%rsi) # sched: [5:2.00] 8613 ; SLM-NEXT: orb %dl, %dil # sched: [1:0.50] 8614 ; SLM-NEXT: orb %dil, (%rsi) # sched: [5:2.00] 8615 ; SLM-NEXT: orb (%rsi), %dil # sched: [4:1.00] 8616 ; SLM-NEXT: #NO_APP 8617 ; SLM-NEXT: retq # sched: [4:1.00] 8618 ; 8619 ; SANDY-LABEL: test_or_8: 8620 ; SANDY: # %bb.0: 8621 ; SANDY-NEXT: #APP 8622 ; SANDY-NEXT: orb $7, %al # sched: [1:0.33] 8623 ; SANDY-NEXT: orb $7, %dil # sched: [1:0.33] 8624 ; SANDY-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8625 ; SANDY-NEXT: orb %dl, %dil # sched: [1:0.33] 8626 ; SANDY-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8627 ; SANDY-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8628 ; SANDY-NEXT: #NO_APP 8629 ; SANDY-NEXT: retq # sched: [1:1.00] 8630 ; 8631 ; HASWELL-LABEL: test_or_8: 8632 ; HASWELL: # %bb.0: 8633 ; HASWELL-NEXT: #APP 8634 ; HASWELL-NEXT: orb $7, %al # sched: [1:0.25] 8635 ; HASWELL-NEXT: orb $7, %dil # sched: [1:0.25] 8636 ; HASWELL-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8637 ; HASWELL-NEXT: orb %dl, %dil # sched: [1:0.25] 8638 ; HASWELL-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8639 ; HASWELL-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8640 ; HASWELL-NEXT: #NO_APP 8641 ; HASWELL-NEXT: retq # sched: [7:1.00] 8642 ; 8643 ; BROADWELL-LABEL: test_or_8: 8644 ; BROADWELL: # %bb.0: 8645 ; BROADWELL-NEXT: #APP 8646 ; BROADWELL-NEXT: orb $7, %al # sched: [1:0.25] 8647 ; BROADWELL-NEXT: orb $7, %dil # sched: [1:0.25] 8648 ; BROADWELL-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8649 ; BROADWELL-NEXT: orb %dl, %dil # sched: [1:0.25] 8650 ; BROADWELL-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8651 ; BROADWELL-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8652 ; BROADWELL-NEXT: #NO_APP 8653 ; BROADWELL-NEXT: retq # sched: [7:1.00] 8654 ; 8655 ; SKYLAKE-LABEL: test_or_8: 8656 ; SKYLAKE: # %bb.0: 8657 ; SKYLAKE-NEXT: #APP 8658 ; SKYLAKE-NEXT: orb $7, %al # sched: [1:0.25] 8659 ; SKYLAKE-NEXT: orb $7, %dil # sched: [1:0.25] 8660 ; SKYLAKE-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8661 ; SKYLAKE-NEXT: orb %dl, %dil # sched: [1:0.25] 8662 ; SKYLAKE-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8663 ; SKYLAKE-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8664 ; SKYLAKE-NEXT: #NO_APP 8665 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 8666 ; 8667 ; SKX-LABEL: test_or_8: 8668 ; SKX: # %bb.0: 8669 ; SKX-NEXT: #APP 8670 ; SKX-NEXT: orb $7, %al # sched: [1:0.25] 8671 ; SKX-NEXT: orb $7, %dil # sched: [1:0.25] 8672 ; SKX-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8673 ; SKX-NEXT: orb %dl, %dil # sched: [1:0.25] 8674 ; SKX-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8675 ; SKX-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8676 ; SKX-NEXT: #NO_APP 8677 ; SKX-NEXT: retq # sched: [7:1.00] 8678 ; 8679 ; BTVER2-LABEL: test_or_8: 8680 ; BTVER2: # %bb.0: 8681 ; BTVER2-NEXT: #APP 8682 ; BTVER2-NEXT: orb $7, %al # sched: [1:0.50] 8683 ; BTVER2-NEXT: orb $7, %dil # sched: [1:0.50] 8684 ; BTVER2-NEXT: orb $7, (%rsi) # sched: [5:1.00] 8685 ; BTVER2-NEXT: orb %dl, %dil # sched: [1:0.50] 8686 ; BTVER2-NEXT: orb %dil, (%rsi) # sched: [5:1.00] 8687 ; BTVER2-NEXT: orb (%rsi), %dil # sched: [4:1.00] 8688 ; BTVER2-NEXT: #NO_APP 8689 ; BTVER2-NEXT: retq # sched: [4:1.00] 8690 ; 8691 ; ZNVER1-LABEL: test_or_8: 8692 ; ZNVER1: # %bb.0: 8693 ; ZNVER1-NEXT: #APP 8694 ; ZNVER1-NEXT: orb $7, %al # sched: [1:0.25] 8695 ; ZNVER1-NEXT: orb $7, %dil # sched: [1:0.25] 8696 ; ZNVER1-NEXT: orb $7, (%rsi) # sched: [5:0.50] 8697 ; ZNVER1-NEXT: orb %dl, %dil # sched: [1:0.25] 8698 ; ZNVER1-NEXT: orb %dil, (%rsi) # sched: [5:0.50] 8699 ; ZNVER1-NEXT: orb (%rsi), %dil # sched: [5:0.50] 8700 ; ZNVER1-NEXT: #NO_APP 8701 ; ZNVER1-NEXT: retq # sched: [1:0.50] 8702 tail call void asm "orb $3, %AL \0A\09 orb $3, $0 \0A\09 orb $3, $2 \0A\09 orb $1, $0 \0A\09 orb $0, $2 \0A\09 orb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 8703 ret void 8704 } 8705 define void @test_or_16(i16 %a0, i16* %a1, i16 %a2) optsize { 8706 ; GENERIC-LABEL: test_or_16: 8707 ; GENERIC: # %bb.0: 8708 ; GENERIC-NEXT: #APP 8709 ; GENERIC-NEXT: orw $511, %ax # imm = 0x1FF 8710 ; GENERIC-NEXT: # sched: [1:0.33] 8711 ; GENERIC-NEXT: orw $511, %di # imm = 0x1FF 8712 ; GENERIC-NEXT: # sched: [1:0.33] 8713 ; GENERIC-NEXT: orw $511, (%rsi) # imm = 0x1FF 8714 ; GENERIC-NEXT: # sched: [7:1.00] 8715 ; GENERIC-NEXT: orw $7, %di # sched: [1:0.33] 8716 ; GENERIC-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8717 ; GENERIC-NEXT: orw %dx, %di # sched: [1:0.33] 8718 ; GENERIC-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8719 ; GENERIC-NEXT: orw (%rsi), %di # sched: [6:0.50] 8720 ; GENERIC-NEXT: #NO_APP 8721 ; GENERIC-NEXT: retq # sched: [1:1.00] 8722 ; 8723 ; ATOM-LABEL: test_or_16: 8724 ; ATOM: # %bb.0: 8725 ; ATOM-NEXT: #APP 8726 ; ATOM-NEXT: orw $511, %ax # imm = 0x1FF 8727 ; ATOM-NEXT: # sched: [1:0.50] 8728 ; ATOM-NEXT: orw $511, %di # imm = 0x1FF 8729 ; ATOM-NEXT: # sched: [1:0.50] 8730 ; ATOM-NEXT: orw $511, (%rsi) # imm = 0x1FF 8731 ; ATOM-NEXT: # sched: [1:1.00] 8732 ; ATOM-NEXT: orw $7, %di # sched: [1:0.50] 8733 ; ATOM-NEXT: orw $7, (%rsi) # sched: [1:1.00] 8734 ; ATOM-NEXT: orw %dx, %di # sched: [1:0.50] 8735 ; ATOM-NEXT: orw %di, (%rsi) # sched: [1:1.00] 8736 ; ATOM-NEXT: orw (%rsi), %di # sched: [1:1.00] 8737 ; ATOM-NEXT: #NO_APP 8738 ; ATOM-NEXT: retq # sched: [79:39.50] 8739 ; 8740 ; SLM-LABEL: test_or_16: 8741 ; SLM: # %bb.0: 8742 ; SLM-NEXT: #APP 8743 ; SLM-NEXT: orw $511, %ax # imm = 0x1FF 8744 ; SLM-NEXT: # sched: [1:0.50] 8745 ; SLM-NEXT: orw $511, %di # imm = 0x1FF 8746 ; SLM-NEXT: # sched: [1:0.50] 8747 ; SLM-NEXT: orw $511, (%rsi) # imm = 0x1FF 8748 ; SLM-NEXT: # sched: [5:2.00] 8749 ; SLM-NEXT: orw $7, %di # sched: [1:0.50] 8750 ; SLM-NEXT: orw $7, (%rsi) # sched: [5:2.00] 8751 ; SLM-NEXT: orw %dx, %di # sched: [1:0.50] 8752 ; SLM-NEXT: orw %di, (%rsi) # sched: [5:2.00] 8753 ; SLM-NEXT: orw (%rsi), %di # sched: [4:1.00] 8754 ; SLM-NEXT: #NO_APP 8755 ; SLM-NEXT: retq # sched: [4:1.00] 8756 ; 8757 ; SANDY-LABEL: test_or_16: 8758 ; SANDY: # %bb.0: 8759 ; SANDY-NEXT: #APP 8760 ; SANDY-NEXT: orw $511, %ax # imm = 0x1FF 8761 ; SANDY-NEXT: # sched: [1:0.33] 8762 ; SANDY-NEXT: orw $511, %di # imm = 0x1FF 8763 ; SANDY-NEXT: # sched: [1:0.33] 8764 ; SANDY-NEXT: orw $511, (%rsi) # imm = 0x1FF 8765 ; SANDY-NEXT: # sched: [7:1.00] 8766 ; SANDY-NEXT: orw $7, %di # sched: [1:0.33] 8767 ; SANDY-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8768 ; SANDY-NEXT: orw %dx, %di # sched: [1:0.33] 8769 ; SANDY-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8770 ; SANDY-NEXT: orw (%rsi), %di # sched: [6:0.50] 8771 ; SANDY-NEXT: #NO_APP 8772 ; SANDY-NEXT: retq # sched: [1:1.00] 8773 ; 8774 ; HASWELL-LABEL: test_or_16: 8775 ; HASWELL: # %bb.0: 8776 ; HASWELL-NEXT: #APP 8777 ; HASWELL-NEXT: orw $511, %ax # imm = 0x1FF 8778 ; HASWELL-NEXT: # sched: [1:0.25] 8779 ; HASWELL-NEXT: orw $511, %di # imm = 0x1FF 8780 ; HASWELL-NEXT: # sched: [1:0.25] 8781 ; HASWELL-NEXT: orw $511, (%rsi) # imm = 0x1FF 8782 ; HASWELL-NEXT: # sched: [7:1.00] 8783 ; HASWELL-NEXT: orw $7, %di # sched: [1:0.25] 8784 ; HASWELL-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8785 ; HASWELL-NEXT: orw %dx, %di # sched: [1:0.25] 8786 ; HASWELL-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8787 ; HASWELL-NEXT: orw (%rsi), %di # sched: [6:0.50] 8788 ; HASWELL-NEXT: #NO_APP 8789 ; HASWELL-NEXT: retq # sched: [7:1.00] 8790 ; 8791 ; BROADWELL-LABEL: test_or_16: 8792 ; BROADWELL: # %bb.0: 8793 ; BROADWELL-NEXT: #APP 8794 ; BROADWELL-NEXT: orw $511, %ax # imm = 0x1FF 8795 ; BROADWELL-NEXT: # sched: [1:0.25] 8796 ; BROADWELL-NEXT: orw $511, %di # imm = 0x1FF 8797 ; BROADWELL-NEXT: # sched: [1:0.25] 8798 ; BROADWELL-NEXT: orw $511, (%rsi) # imm = 0x1FF 8799 ; BROADWELL-NEXT: # sched: [7:1.00] 8800 ; BROADWELL-NEXT: orw $7, %di # sched: [1:0.25] 8801 ; BROADWELL-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8802 ; BROADWELL-NEXT: orw %dx, %di # sched: [1:0.25] 8803 ; BROADWELL-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8804 ; BROADWELL-NEXT: orw (%rsi), %di # sched: [6:0.50] 8805 ; BROADWELL-NEXT: #NO_APP 8806 ; BROADWELL-NEXT: retq # sched: [7:1.00] 8807 ; 8808 ; SKYLAKE-LABEL: test_or_16: 8809 ; SKYLAKE: # %bb.0: 8810 ; SKYLAKE-NEXT: #APP 8811 ; SKYLAKE-NEXT: orw $511, %ax # imm = 0x1FF 8812 ; SKYLAKE-NEXT: # sched: [1:0.25] 8813 ; SKYLAKE-NEXT: orw $511, %di # imm = 0x1FF 8814 ; SKYLAKE-NEXT: # sched: [1:0.25] 8815 ; SKYLAKE-NEXT: orw $511, (%rsi) # imm = 0x1FF 8816 ; SKYLAKE-NEXT: # sched: [7:1.00] 8817 ; SKYLAKE-NEXT: orw $7, %di # sched: [1:0.25] 8818 ; SKYLAKE-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8819 ; SKYLAKE-NEXT: orw %dx, %di # sched: [1:0.25] 8820 ; SKYLAKE-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8821 ; SKYLAKE-NEXT: orw (%rsi), %di # sched: [6:0.50] 8822 ; SKYLAKE-NEXT: #NO_APP 8823 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 8824 ; 8825 ; SKX-LABEL: test_or_16: 8826 ; SKX: # %bb.0: 8827 ; SKX-NEXT: #APP 8828 ; SKX-NEXT: orw $511, %ax # imm = 0x1FF 8829 ; SKX-NEXT: # sched: [1:0.25] 8830 ; SKX-NEXT: orw $511, %di # imm = 0x1FF 8831 ; SKX-NEXT: # sched: [1:0.25] 8832 ; SKX-NEXT: orw $511, (%rsi) # imm = 0x1FF 8833 ; SKX-NEXT: # sched: [7:1.00] 8834 ; SKX-NEXT: orw $7, %di # sched: [1:0.25] 8835 ; SKX-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8836 ; SKX-NEXT: orw %dx, %di # sched: [1:0.25] 8837 ; SKX-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8838 ; SKX-NEXT: orw (%rsi), %di # sched: [6:0.50] 8839 ; SKX-NEXT: #NO_APP 8840 ; SKX-NEXT: retq # sched: [7:1.00] 8841 ; 8842 ; BTVER2-LABEL: test_or_16: 8843 ; BTVER2: # %bb.0: 8844 ; BTVER2-NEXT: #APP 8845 ; BTVER2-NEXT: orw $511, %ax # imm = 0x1FF 8846 ; BTVER2-NEXT: # sched: [1:0.50] 8847 ; BTVER2-NEXT: orw $511, %di # imm = 0x1FF 8848 ; BTVER2-NEXT: # sched: [1:0.50] 8849 ; BTVER2-NEXT: orw $511, (%rsi) # imm = 0x1FF 8850 ; BTVER2-NEXT: # sched: [5:1.00] 8851 ; BTVER2-NEXT: orw $7, %di # sched: [1:0.50] 8852 ; BTVER2-NEXT: orw $7, (%rsi) # sched: [5:1.00] 8853 ; BTVER2-NEXT: orw %dx, %di # sched: [1:0.50] 8854 ; BTVER2-NEXT: orw %di, (%rsi) # sched: [5:1.00] 8855 ; BTVER2-NEXT: orw (%rsi), %di # sched: [4:1.00] 8856 ; BTVER2-NEXT: #NO_APP 8857 ; BTVER2-NEXT: retq # sched: [4:1.00] 8858 ; 8859 ; ZNVER1-LABEL: test_or_16: 8860 ; ZNVER1: # %bb.0: 8861 ; ZNVER1-NEXT: #APP 8862 ; ZNVER1-NEXT: orw $511, %ax # imm = 0x1FF 8863 ; ZNVER1-NEXT: # sched: [1:0.25] 8864 ; ZNVER1-NEXT: orw $511, %di # imm = 0x1FF 8865 ; ZNVER1-NEXT: # sched: [1:0.25] 8866 ; ZNVER1-NEXT: orw $511, (%rsi) # imm = 0x1FF 8867 ; ZNVER1-NEXT: # sched: [5:0.50] 8868 ; ZNVER1-NEXT: orw $7, %di # sched: [1:0.25] 8869 ; ZNVER1-NEXT: orw $7, (%rsi) # sched: [5:0.50] 8870 ; ZNVER1-NEXT: orw %dx, %di # sched: [1:0.25] 8871 ; ZNVER1-NEXT: orw %di, (%rsi) # sched: [5:0.50] 8872 ; ZNVER1-NEXT: orw (%rsi), %di # sched: [5:0.50] 8873 ; ZNVER1-NEXT: #NO_APP 8874 ; ZNVER1-NEXT: retq # sched: [1:0.50] 8875 tail call void asm "orw $3, %AX \0A\09 orw $3, $0 \0A\09 orw $3, $2 \0A\09 orw $4, $0 \0A\09 orw $4, $2 \0A\09 orw $1, $0 \0A\09 orw $0, $2 \0A\09 orw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 8876 ret void 8877 } 8878 define void @test_or_32(i32 %a0, i32* %a1, i32 %a2) optsize { 8879 ; GENERIC-LABEL: test_or_32: 8880 ; GENERIC: # %bb.0: 8881 ; GENERIC-NEXT: #APP 8882 ; GENERIC-NEXT: orl $665536, %eax # imm = 0xA27C0 8883 ; GENERIC-NEXT: # sched: [1:0.33] 8884 ; GENERIC-NEXT: orl $665536, %edi # imm = 0xA27C0 8885 ; GENERIC-NEXT: # sched: [1:0.33] 8886 ; GENERIC-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8887 ; GENERIC-NEXT: # sched: [7:1.00] 8888 ; GENERIC-NEXT: orl $7, %edi # sched: [1:0.33] 8889 ; GENERIC-NEXT: orl $7, (%rsi) # sched: [7:1.00] 8890 ; GENERIC-NEXT: orl %edx, %edi # sched: [1:0.33] 8891 ; GENERIC-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 8892 ; GENERIC-NEXT: orl (%rsi), %edi # sched: [6:0.50] 8893 ; GENERIC-NEXT: #NO_APP 8894 ; GENERIC-NEXT: retq # sched: [1:1.00] 8895 ; 8896 ; ATOM-LABEL: test_or_32: 8897 ; ATOM: # %bb.0: 8898 ; ATOM-NEXT: #APP 8899 ; ATOM-NEXT: orl $665536, %eax # imm = 0xA27C0 8900 ; ATOM-NEXT: # sched: [1:0.50] 8901 ; ATOM-NEXT: orl $665536, %edi # imm = 0xA27C0 8902 ; ATOM-NEXT: # sched: [1:0.50] 8903 ; ATOM-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8904 ; ATOM-NEXT: # sched: [1:1.00] 8905 ; ATOM-NEXT: orl $7, %edi # sched: [1:0.50] 8906 ; ATOM-NEXT: orl $7, (%rsi) # sched: [1:1.00] 8907 ; ATOM-NEXT: orl %edx, %edi # sched: [1:0.50] 8908 ; ATOM-NEXT: orl %edi, (%rsi) # sched: [1:1.00] 8909 ; ATOM-NEXT: orl (%rsi), %edi # sched: [1:1.00] 8910 ; ATOM-NEXT: #NO_APP 8911 ; ATOM-NEXT: retq # sched: [79:39.50] 8912 ; 8913 ; SLM-LABEL: test_or_32: 8914 ; SLM: # %bb.0: 8915 ; SLM-NEXT: #APP 8916 ; SLM-NEXT: orl $665536, %eax # imm = 0xA27C0 8917 ; SLM-NEXT: # sched: [1:0.50] 8918 ; SLM-NEXT: orl $665536, %edi # imm = 0xA27C0 8919 ; SLM-NEXT: # sched: [1:0.50] 8920 ; SLM-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8921 ; SLM-NEXT: # sched: [5:2.00] 8922 ; SLM-NEXT: orl $7, %edi # sched: [1:0.50] 8923 ; SLM-NEXT: orl $7, (%rsi) # sched: [5:2.00] 8924 ; SLM-NEXT: orl %edx, %edi # sched: [1:0.50] 8925 ; SLM-NEXT: orl %edi, (%rsi) # sched: [5:2.00] 8926 ; SLM-NEXT: orl (%rsi), %edi # sched: [4:1.00] 8927 ; SLM-NEXT: #NO_APP 8928 ; SLM-NEXT: retq # sched: [4:1.00] 8929 ; 8930 ; SANDY-LABEL: test_or_32: 8931 ; SANDY: # %bb.0: 8932 ; SANDY-NEXT: #APP 8933 ; SANDY-NEXT: orl $665536, %eax # imm = 0xA27C0 8934 ; SANDY-NEXT: # sched: [1:0.33] 8935 ; SANDY-NEXT: orl $665536, %edi # imm = 0xA27C0 8936 ; SANDY-NEXT: # sched: [1:0.33] 8937 ; SANDY-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8938 ; SANDY-NEXT: # sched: [7:1.00] 8939 ; SANDY-NEXT: orl $7, %edi # sched: [1:0.33] 8940 ; SANDY-NEXT: orl $7, (%rsi) # sched: [7:1.00] 8941 ; SANDY-NEXT: orl %edx, %edi # sched: [1:0.33] 8942 ; SANDY-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 8943 ; SANDY-NEXT: orl (%rsi), %edi # sched: [6:0.50] 8944 ; SANDY-NEXT: #NO_APP 8945 ; SANDY-NEXT: retq # sched: [1:1.00] 8946 ; 8947 ; HASWELL-LABEL: test_or_32: 8948 ; HASWELL: # %bb.0: 8949 ; HASWELL-NEXT: #APP 8950 ; HASWELL-NEXT: orl $665536, %eax # imm = 0xA27C0 8951 ; HASWELL-NEXT: # sched: [1:0.25] 8952 ; HASWELL-NEXT: orl $665536, %edi # imm = 0xA27C0 8953 ; HASWELL-NEXT: # sched: [1:0.25] 8954 ; HASWELL-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8955 ; HASWELL-NEXT: # sched: [7:1.00] 8956 ; HASWELL-NEXT: orl $7, %edi # sched: [1:0.25] 8957 ; HASWELL-NEXT: orl $7, (%rsi) # sched: [7:1.00] 8958 ; HASWELL-NEXT: orl %edx, %edi # sched: [1:0.25] 8959 ; HASWELL-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 8960 ; HASWELL-NEXT: orl (%rsi), %edi # sched: [6:0.50] 8961 ; HASWELL-NEXT: #NO_APP 8962 ; HASWELL-NEXT: retq # sched: [7:1.00] 8963 ; 8964 ; BROADWELL-LABEL: test_or_32: 8965 ; BROADWELL: # %bb.0: 8966 ; BROADWELL-NEXT: #APP 8967 ; BROADWELL-NEXT: orl $665536, %eax # imm = 0xA27C0 8968 ; BROADWELL-NEXT: # sched: [1:0.25] 8969 ; BROADWELL-NEXT: orl $665536, %edi # imm = 0xA27C0 8970 ; BROADWELL-NEXT: # sched: [1:0.25] 8971 ; BROADWELL-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8972 ; BROADWELL-NEXT: # sched: [7:1.00] 8973 ; BROADWELL-NEXT: orl $7, %edi # sched: [1:0.25] 8974 ; BROADWELL-NEXT: orl $7, (%rsi) # sched: [7:1.00] 8975 ; BROADWELL-NEXT: orl %edx, %edi # sched: [1:0.25] 8976 ; BROADWELL-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 8977 ; BROADWELL-NEXT: orl (%rsi), %edi # sched: [6:0.50] 8978 ; BROADWELL-NEXT: #NO_APP 8979 ; BROADWELL-NEXT: retq # sched: [7:1.00] 8980 ; 8981 ; SKYLAKE-LABEL: test_or_32: 8982 ; SKYLAKE: # %bb.0: 8983 ; SKYLAKE-NEXT: #APP 8984 ; SKYLAKE-NEXT: orl $665536, %eax # imm = 0xA27C0 8985 ; SKYLAKE-NEXT: # sched: [1:0.25] 8986 ; SKYLAKE-NEXT: orl $665536, %edi # imm = 0xA27C0 8987 ; SKYLAKE-NEXT: # sched: [1:0.25] 8988 ; SKYLAKE-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8989 ; SKYLAKE-NEXT: # sched: [7:1.00] 8990 ; SKYLAKE-NEXT: orl $7, %edi # sched: [1:0.25] 8991 ; SKYLAKE-NEXT: orl $7, (%rsi) # sched: [7:1.00] 8992 ; SKYLAKE-NEXT: orl %edx, %edi # sched: [1:0.25] 8993 ; SKYLAKE-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 8994 ; SKYLAKE-NEXT: orl (%rsi), %edi # sched: [6:0.50] 8995 ; SKYLAKE-NEXT: #NO_APP 8996 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 8997 ; 8998 ; SKX-LABEL: test_or_32: 8999 ; SKX: # %bb.0: 9000 ; SKX-NEXT: #APP 9001 ; SKX-NEXT: orl $665536, %eax # imm = 0xA27C0 9002 ; SKX-NEXT: # sched: [1:0.25] 9003 ; SKX-NEXT: orl $665536, %edi # imm = 0xA27C0 9004 ; SKX-NEXT: # sched: [1:0.25] 9005 ; SKX-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 9006 ; SKX-NEXT: # sched: [7:1.00] 9007 ; SKX-NEXT: orl $7, %edi # sched: [1:0.25] 9008 ; SKX-NEXT: orl $7, (%rsi) # sched: [7:1.00] 9009 ; SKX-NEXT: orl %edx, %edi # sched: [1:0.25] 9010 ; SKX-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 9011 ; SKX-NEXT: orl (%rsi), %edi # sched: [6:0.50] 9012 ; SKX-NEXT: #NO_APP 9013 ; SKX-NEXT: retq # sched: [7:1.00] 9014 ; 9015 ; BTVER2-LABEL: test_or_32: 9016 ; BTVER2: # %bb.0: 9017 ; BTVER2-NEXT: #APP 9018 ; BTVER2-NEXT: orl $665536, %eax # imm = 0xA27C0 9019 ; BTVER2-NEXT: # sched: [1:0.50] 9020 ; BTVER2-NEXT: orl $665536, %edi # imm = 0xA27C0 9021 ; BTVER2-NEXT: # sched: [1:0.50] 9022 ; BTVER2-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 9023 ; BTVER2-NEXT: # sched: [5:1.00] 9024 ; BTVER2-NEXT: orl $7, %edi # sched: [1:0.50] 9025 ; BTVER2-NEXT: orl $7, (%rsi) # sched: [5:1.00] 9026 ; BTVER2-NEXT: orl %edx, %edi # sched: [1:0.50] 9027 ; BTVER2-NEXT: orl %edi, (%rsi) # sched: [5:1.00] 9028 ; BTVER2-NEXT: orl (%rsi), %edi # sched: [4:1.00] 9029 ; BTVER2-NEXT: #NO_APP 9030 ; BTVER2-NEXT: retq # sched: [4:1.00] 9031 ; 9032 ; ZNVER1-LABEL: test_or_32: 9033 ; ZNVER1: # %bb.0: 9034 ; ZNVER1-NEXT: #APP 9035 ; ZNVER1-NEXT: orl $665536, %eax # imm = 0xA27C0 9036 ; ZNVER1-NEXT: # sched: [1:0.25] 9037 ; ZNVER1-NEXT: orl $665536, %edi # imm = 0xA27C0 9038 ; ZNVER1-NEXT: # sched: [1:0.25] 9039 ; ZNVER1-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 9040 ; ZNVER1-NEXT: # sched: [5:0.50] 9041 ; ZNVER1-NEXT: orl $7, %edi # sched: [1:0.25] 9042 ; ZNVER1-NEXT: orl $7, (%rsi) # sched: [5:0.50] 9043 ; ZNVER1-NEXT: orl %edx, %edi # sched: [1:0.25] 9044 ; ZNVER1-NEXT: orl %edi, (%rsi) # sched: [5:0.50] 9045 ; ZNVER1-NEXT: orl (%rsi), %edi # sched: [5:0.50] 9046 ; ZNVER1-NEXT: #NO_APP 9047 ; ZNVER1-NEXT: retq # sched: [1:0.50] 9048 tail call void asm "orl $3, %EAX \0A\09 orl $3, $0 \0A\09 orl $3, $2 \0A\09 orl $4, $0 \0A\09 orl $4, $2 \0A\09 orl $1, $0 \0A\09 orl $0, $2 \0A\09 orl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 9049 ret void 9050 } 9051 define void @test_or_64(i64 %a0, i64* %a1, i64 %a2) optsize { 9052 ; GENERIC-LABEL: test_or_64: 9053 ; GENERIC: # %bb.0: 9054 ; GENERIC-NEXT: #APP 9055 ; GENERIC-NEXT: orq $665536, %rax # imm = 0xA27C0 9056 ; GENERIC-NEXT: # sched: [1:0.33] 9057 ; GENERIC-NEXT: orq $665536, %rdi # imm = 0xA27C0 9058 ; GENERIC-NEXT: # sched: [1:0.33] 9059 ; GENERIC-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9060 ; GENERIC-NEXT: # sched: [7:1.00] 9061 ; GENERIC-NEXT: orq $7, %rdi # sched: [1:0.33] 9062 ; GENERIC-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9063 ; GENERIC-NEXT: orq %rdx, %rdi # sched: [1:0.33] 9064 ; GENERIC-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9065 ; GENERIC-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9066 ; GENERIC-NEXT: #NO_APP 9067 ; GENERIC-NEXT: retq # sched: [1:1.00] 9068 ; 9069 ; ATOM-LABEL: test_or_64: 9070 ; ATOM: # %bb.0: 9071 ; ATOM-NEXT: #APP 9072 ; ATOM-NEXT: orq $665536, %rax # imm = 0xA27C0 9073 ; ATOM-NEXT: # sched: [1:0.50] 9074 ; ATOM-NEXT: orq $665536, %rdi # imm = 0xA27C0 9075 ; ATOM-NEXT: # sched: [1:0.50] 9076 ; ATOM-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9077 ; ATOM-NEXT: # sched: [1:1.00] 9078 ; ATOM-NEXT: orq $7, %rdi # sched: [1:0.50] 9079 ; ATOM-NEXT: orq $7, (%rsi) # sched: [1:1.00] 9080 ; ATOM-NEXT: orq %rdx, %rdi # sched: [1:0.50] 9081 ; ATOM-NEXT: orq %rdi, (%rsi) # sched: [1:1.00] 9082 ; ATOM-NEXT: orq (%rsi), %rdi # sched: [1:1.00] 9083 ; ATOM-NEXT: #NO_APP 9084 ; ATOM-NEXT: retq # sched: [79:39.50] 9085 ; 9086 ; SLM-LABEL: test_or_64: 9087 ; SLM: # %bb.0: 9088 ; SLM-NEXT: #APP 9089 ; SLM-NEXT: orq $665536, %rax # imm = 0xA27C0 9090 ; SLM-NEXT: # sched: [1:0.50] 9091 ; SLM-NEXT: orq $665536, %rdi # imm = 0xA27C0 9092 ; SLM-NEXT: # sched: [1:0.50] 9093 ; SLM-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9094 ; SLM-NEXT: # sched: [5:2.00] 9095 ; SLM-NEXT: orq $7, %rdi # sched: [1:0.50] 9096 ; SLM-NEXT: orq $7, (%rsi) # sched: [5:2.00] 9097 ; SLM-NEXT: orq %rdx, %rdi # sched: [1:0.50] 9098 ; SLM-NEXT: orq %rdi, (%rsi) # sched: [5:2.00] 9099 ; SLM-NEXT: orq (%rsi), %rdi # sched: [4:1.00] 9100 ; SLM-NEXT: #NO_APP 9101 ; SLM-NEXT: retq # sched: [4:1.00] 9102 ; 9103 ; SANDY-LABEL: test_or_64: 9104 ; SANDY: # %bb.0: 9105 ; SANDY-NEXT: #APP 9106 ; SANDY-NEXT: orq $665536, %rax # imm = 0xA27C0 9107 ; SANDY-NEXT: # sched: [1:0.33] 9108 ; SANDY-NEXT: orq $665536, %rdi # imm = 0xA27C0 9109 ; SANDY-NEXT: # sched: [1:0.33] 9110 ; SANDY-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9111 ; SANDY-NEXT: # sched: [7:1.00] 9112 ; SANDY-NEXT: orq $7, %rdi # sched: [1:0.33] 9113 ; SANDY-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9114 ; SANDY-NEXT: orq %rdx, %rdi # sched: [1:0.33] 9115 ; SANDY-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9116 ; SANDY-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9117 ; SANDY-NEXT: #NO_APP 9118 ; SANDY-NEXT: retq # sched: [1:1.00] 9119 ; 9120 ; HASWELL-LABEL: test_or_64: 9121 ; HASWELL: # %bb.0: 9122 ; HASWELL-NEXT: #APP 9123 ; HASWELL-NEXT: orq $665536, %rax # imm = 0xA27C0 9124 ; HASWELL-NEXT: # sched: [1:0.25] 9125 ; HASWELL-NEXT: orq $665536, %rdi # imm = 0xA27C0 9126 ; HASWELL-NEXT: # sched: [1:0.25] 9127 ; HASWELL-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9128 ; HASWELL-NEXT: # sched: [7:1.00] 9129 ; HASWELL-NEXT: orq $7, %rdi # sched: [1:0.25] 9130 ; HASWELL-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9131 ; HASWELL-NEXT: orq %rdx, %rdi # sched: [1:0.25] 9132 ; HASWELL-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9133 ; HASWELL-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9134 ; HASWELL-NEXT: #NO_APP 9135 ; HASWELL-NEXT: retq # sched: [7:1.00] 9136 ; 9137 ; BROADWELL-LABEL: test_or_64: 9138 ; BROADWELL: # %bb.0: 9139 ; BROADWELL-NEXT: #APP 9140 ; BROADWELL-NEXT: orq $665536, %rax # imm = 0xA27C0 9141 ; BROADWELL-NEXT: # sched: [1:0.25] 9142 ; BROADWELL-NEXT: orq $665536, %rdi # imm = 0xA27C0 9143 ; BROADWELL-NEXT: # sched: [1:0.25] 9144 ; BROADWELL-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9145 ; BROADWELL-NEXT: # sched: [7:1.00] 9146 ; BROADWELL-NEXT: orq $7, %rdi # sched: [1:0.25] 9147 ; BROADWELL-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9148 ; BROADWELL-NEXT: orq %rdx, %rdi # sched: [1:0.25] 9149 ; BROADWELL-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9150 ; BROADWELL-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9151 ; BROADWELL-NEXT: #NO_APP 9152 ; BROADWELL-NEXT: retq # sched: [7:1.00] 9153 ; 9154 ; SKYLAKE-LABEL: test_or_64: 9155 ; SKYLAKE: # %bb.0: 9156 ; SKYLAKE-NEXT: #APP 9157 ; SKYLAKE-NEXT: orq $665536, %rax # imm = 0xA27C0 9158 ; SKYLAKE-NEXT: # sched: [1:0.25] 9159 ; SKYLAKE-NEXT: orq $665536, %rdi # imm = 0xA27C0 9160 ; SKYLAKE-NEXT: # sched: [1:0.25] 9161 ; SKYLAKE-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9162 ; SKYLAKE-NEXT: # sched: [7:1.00] 9163 ; SKYLAKE-NEXT: orq $7, %rdi # sched: [1:0.25] 9164 ; SKYLAKE-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9165 ; SKYLAKE-NEXT: orq %rdx, %rdi # sched: [1:0.25] 9166 ; SKYLAKE-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9167 ; SKYLAKE-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9168 ; SKYLAKE-NEXT: #NO_APP 9169 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 9170 ; 9171 ; SKX-LABEL: test_or_64: 9172 ; SKX: # %bb.0: 9173 ; SKX-NEXT: #APP 9174 ; SKX-NEXT: orq $665536, %rax # imm = 0xA27C0 9175 ; SKX-NEXT: # sched: [1:0.25] 9176 ; SKX-NEXT: orq $665536, %rdi # imm = 0xA27C0 9177 ; SKX-NEXT: # sched: [1:0.25] 9178 ; SKX-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9179 ; SKX-NEXT: # sched: [7:1.00] 9180 ; SKX-NEXT: orq $7, %rdi # sched: [1:0.25] 9181 ; SKX-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9182 ; SKX-NEXT: orq %rdx, %rdi # sched: [1:0.25] 9183 ; SKX-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9184 ; SKX-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9185 ; SKX-NEXT: #NO_APP 9186 ; SKX-NEXT: retq # sched: [7:1.00] 9187 ; 9188 ; BTVER2-LABEL: test_or_64: 9189 ; BTVER2: # %bb.0: 9190 ; BTVER2-NEXT: #APP 9191 ; BTVER2-NEXT: orq $665536, %rax # imm = 0xA27C0 9192 ; BTVER2-NEXT: # sched: [1:0.50] 9193 ; BTVER2-NEXT: orq $665536, %rdi # imm = 0xA27C0 9194 ; BTVER2-NEXT: # sched: [1:0.50] 9195 ; BTVER2-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9196 ; BTVER2-NEXT: # sched: [5:1.00] 9197 ; BTVER2-NEXT: orq $7, %rdi # sched: [1:0.50] 9198 ; BTVER2-NEXT: orq $7, (%rsi) # sched: [5:1.00] 9199 ; BTVER2-NEXT: orq %rdx, %rdi # sched: [1:0.50] 9200 ; BTVER2-NEXT: orq %rdi, (%rsi) # sched: [5:1.00] 9201 ; BTVER2-NEXT: orq (%rsi), %rdi # sched: [4:1.00] 9202 ; BTVER2-NEXT: #NO_APP 9203 ; BTVER2-NEXT: retq # sched: [4:1.00] 9204 ; 9205 ; ZNVER1-LABEL: test_or_64: 9206 ; ZNVER1: # %bb.0: 9207 ; ZNVER1-NEXT: #APP 9208 ; ZNVER1-NEXT: orq $665536, %rax # imm = 0xA27C0 9209 ; ZNVER1-NEXT: # sched: [1:0.25] 9210 ; ZNVER1-NEXT: orq $665536, %rdi # imm = 0xA27C0 9211 ; ZNVER1-NEXT: # sched: [1:0.25] 9212 ; ZNVER1-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9213 ; ZNVER1-NEXT: # sched: [5:0.50] 9214 ; ZNVER1-NEXT: orq $7, %rdi # sched: [1:0.25] 9215 ; ZNVER1-NEXT: orq $7, (%rsi) # sched: [5:0.50] 9216 ; ZNVER1-NEXT: orq %rdx, %rdi # sched: [1:0.25] 9217 ; ZNVER1-NEXT: orq %rdi, (%rsi) # sched: [5:0.50] 9218 ; ZNVER1-NEXT: orq (%rsi), %rdi # sched: [5:0.50] 9219 ; ZNVER1-NEXT: #NO_APP 9220 ; ZNVER1-NEXT: retq # sched: [1:0.50] 9221 tail call void asm "orq $3, %RAX \0A\09 orq $3, $0 \0A\09 orq $3, $2 \0A\09 orq $4, $0 \0A\09 orq $4, $2 \0A\09 orq $1, $0 \0A\09 orq $0, $2 \0A\09 orq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 9222 ret void 9223 } 9224 9225 define void @test_out() optsize { 9226 ; GENERIC-LABEL: test_out: 9227 ; GENERIC: # %bb.0: 9228 ; GENERIC-NEXT: #APP 9229 ; GENERIC-NEXT: outb %al, $7 # sched: [100:0.33] 9230 ; GENERIC-NEXT: outw %ax, $7 # sched: [100:0.33] 9231 ; GENERIC-NEXT: outl %eax, $7 # sched: [100:0.33] 9232 ; GENERIC-NEXT: outb %al, %dx # sched: [100:0.33] 9233 ; GENERIC-NEXT: outw %ax, %dx # sched: [100:0.33] 9234 ; GENERIC-NEXT: outl %eax, %dx # sched: [100:0.33] 9235 ; GENERIC-NEXT: #NO_APP 9236 ; GENERIC-NEXT: retq # sched: [1:1.00] 9237 ; 9238 ; ATOM-LABEL: test_out: 9239 ; ATOM: # %bb.0: 9240 ; ATOM-NEXT: #APP 9241 ; ATOM-NEXT: outb %al, $7 # sched: [72:36.00] 9242 ; ATOM-NEXT: outw %ax, $7 # sched: [72:36.00] 9243 ; ATOM-NEXT: outl %eax, $7 # sched: [72:36.00] 9244 ; ATOM-NEXT: outb %al, %dx # sched: [68:34.00] 9245 ; ATOM-NEXT: outw %ax, %dx # sched: [68:34.00] 9246 ; ATOM-NEXT: outl %eax, %dx # sched: [68:34.00] 9247 ; ATOM-NEXT: #NO_APP 9248 ; ATOM-NEXT: retq # sched: [79:39.50] 9249 ; 9250 ; SLM-LABEL: test_out: 9251 ; SLM: # %bb.0: 9252 ; SLM-NEXT: #APP 9253 ; SLM-NEXT: outb %al, $7 # sched: [100:1.00] 9254 ; SLM-NEXT: outw %ax, $7 # sched: [100:1.00] 9255 ; SLM-NEXT: outl %eax, $7 # sched: [100:1.00] 9256 ; SLM-NEXT: outb %al, %dx # sched: [100:1.00] 9257 ; SLM-NEXT: outw %ax, %dx # sched: [100:1.00] 9258 ; SLM-NEXT: outl %eax, %dx # sched: [100:1.00] 9259 ; SLM-NEXT: #NO_APP 9260 ; SLM-NEXT: retq # sched: [4:1.00] 9261 ; 9262 ; SANDY-LABEL: test_out: 9263 ; SANDY: # %bb.0: 9264 ; SANDY-NEXT: #APP 9265 ; SANDY-NEXT: outb %al, $7 # sched: [100:0.33] 9266 ; SANDY-NEXT: outw %ax, $7 # sched: [100:0.33] 9267 ; SANDY-NEXT: outl %eax, $7 # sched: [100:0.33] 9268 ; SANDY-NEXT: outb %al, %dx # sched: [100:0.33] 9269 ; SANDY-NEXT: outw %ax, %dx # sched: [100:0.33] 9270 ; SANDY-NEXT: outl %eax, %dx # sched: [100:0.33] 9271 ; SANDY-NEXT: #NO_APP 9272 ; SANDY-NEXT: retq # sched: [1:1.00] 9273 ; 9274 ; HASWELL-LABEL: test_out: 9275 ; HASWELL: # %bb.0: 9276 ; HASWELL-NEXT: #APP 9277 ; HASWELL-NEXT: outb %al, $7 # sched: [36:5.00] 9278 ; HASWELL-NEXT: outw %ax, $7 # sched: [36:5.00] 9279 ; HASWELL-NEXT: outl %eax, $7 # sched: [36:5.00] 9280 ; HASWELL-NEXT: outb %al, %dx # sched: [36:5.00] 9281 ; HASWELL-NEXT: outw %ax, %dx # sched: [36:5.00] 9282 ; HASWELL-NEXT: outl %eax, %dx # sched: [36:5.00] 9283 ; HASWELL-NEXT: #NO_APP 9284 ; HASWELL-NEXT: retq # sched: [7:1.00] 9285 ; 9286 ; BROADWELL-LABEL: test_out: 9287 ; BROADWELL: # %bb.0: 9288 ; BROADWELL-NEXT: #APP 9289 ; BROADWELL-NEXT: outb %al, $7 # sched: [35:5.00] 9290 ; BROADWELL-NEXT: outw %ax, $7 # sched: [35:5.00] 9291 ; BROADWELL-NEXT: outl %eax, $7 # sched: [35:5.00] 9292 ; BROADWELL-NEXT: outb %al, %dx # sched: [35:5.00] 9293 ; BROADWELL-NEXT: outw %ax, %dx # sched: [35:5.00] 9294 ; BROADWELL-NEXT: outl %eax, %dx # sched: [35:5.00] 9295 ; BROADWELL-NEXT: #NO_APP 9296 ; BROADWELL-NEXT: retq # sched: [7:1.00] 9297 ; 9298 ; SKYLAKE-LABEL: test_out: 9299 ; SKYLAKE: # %bb.0: 9300 ; SKYLAKE-NEXT: #APP 9301 ; SKYLAKE-NEXT: outb %al, $7 # sched: [35:5.00] 9302 ; SKYLAKE-NEXT: outw %ax, $7 # sched: [35:5.00] 9303 ; SKYLAKE-NEXT: outl %eax, $7 # sched: [35:5.00] 9304 ; SKYLAKE-NEXT: outb %al, %dx # sched: [35:5.00] 9305 ; SKYLAKE-NEXT: outw %ax, %dx # sched: [35:5.00] 9306 ; SKYLAKE-NEXT: outl %eax, %dx # sched: [35:5.00] 9307 ; SKYLAKE-NEXT: #NO_APP 9308 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 9309 ; 9310 ; SKX-LABEL: test_out: 9311 ; SKX: # %bb.0: 9312 ; SKX-NEXT: #APP 9313 ; SKX-NEXT: outb %al, $7 # sched: [35:5.00] 9314 ; SKX-NEXT: outw %ax, $7 # sched: [35:5.00] 9315 ; SKX-NEXT: outl %eax, $7 # sched: [35:5.00] 9316 ; SKX-NEXT: outb %al, %dx # sched: [35:5.00] 9317 ; SKX-NEXT: outw %ax, %dx # sched: [35:5.00] 9318 ; SKX-NEXT: outl %eax, %dx # sched: [35:5.00] 9319 ; SKX-NEXT: #NO_APP 9320 ; SKX-NEXT: retq # sched: [7:1.00] 9321 ; 9322 ; BTVER2-LABEL: test_out: 9323 ; BTVER2: # %bb.0: 9324 ; BTVER2-NEXT: #APP 9325 ; BTVER2-NEXT: outb %al, $7 # sched: [100:0.50] 9326 ; BTVER2-NEXT: outw %ax, $7 # sched: [100:0.50] 9327 ; BTVER2-NEXT: outl %eax, $7 # sched: [100:0.50] 9328 ; BTVER2-NEXT: outb %al, %dx # sched: [100:0.50] 9329 ; BTVER2-NEXT: outw %ax, %dx # sched: [100:0.50] 9330 ; BTVER2-NEXT: outl %eax, %dx # sched: [100:0.50] 9331 ; BTVER2-NEXT: #NO_APP 9332 ; BTVER2-NEXT: retq # sched: [4:1.00] 9333 ; 9334 ; ZNVER1-LABEL: test_out: 9335 ; ZNVER1: # %bb.0: 9336 ; ZNVER1-NEXT: #APP 9337 ; ZNVER1-NEXT: outb %al, $7 # sched: [100:0.25] 9338 ; ZNVER1-NEXT: outw %ax, $7 # sched: [100:0.25] 9339 ; ZNVER1-NEXT: outl %eax, $7 # sched: [100:0.25] 9340 ; ZNVER1-NEXT: outb %al, %dx # sched: [100:0.25] 9341 ; ZNVER1-NEXT: outw %ax, %dx # sched: [100:0.25] 9342 ; ZNVER1-NEXT: outl %eax, %dx # sched: [100:0.25] 9343 ; ZNVER1-NEXT: #NO_APP 9344 ; ZNVER1-NEXT: retq # sched: [1:0.50] 9345 tail call void asm "outb %AL, $0 \0A\09 outw %AX, $0 \0A\09 outl %EAX, $0 \0A\09 outb %AL, %DX \0A\09 outw %AX, %DX \0A\09 outl %EAX, %DX", "i"(i8 7) nounwind 9346 ret void 9347 } 9348 9349 define void @test_outs() optsize { 9350 ; GENERIC-LABEL: test_outs: 9351 ; GENERIC: # %bb.0: 9352 ; GENERIC-NEXT: #APP 9353 ; GENERIC-NEXT: outsb (%rsi), %dx # sched: [100:0.33] 9354 ; GENERIC-NEXT: outsw (%rsi), %dx # sched: [100:0.33] 9355 ; GENERIC-NEXT: outsl (%rsi), %dx # sched: [100:0.33] 9356 ; GENERIC-NEXT: #NO_APP 9357 ; GENERIC-NEXT: retq # sched: [1:1.00] 9358 ; 9359 ; ATOM-LABEL: test_outs: 9360 ; ATOM: # %bb.0: 9361 ; ATOM-NEXT: #APP 9362 ; ATOM-NEXT: outsb (%rsi), %dx # sched: [74:37.00] 9363 ; ATOM-NEXT: outsw (%rsi), %dx # sched: [74:37.00] 9364 ; ATOM-NEXT: outsl (%rsi), %dx # sched: [74:37.00] 9365 ; ATOM-NEXT: #NO_APP 9366 ; ATOM-NEXT: retq # sched: [79:39.50] 9367 ; 9368 ; SLM-LABEL: test_outs: 9369 ; SLM: # %bb.0: 9370 ; SLM-NEXT: #APP 9371 ; SLM-NEXT: outsb (%rsi), %dx # sched: [100:1.00] 9372 ; SLM-NEXT: outsw (%rsi), %dx # sched: [100:1.00] 9373 ; SLM-NEXT: outsl (%rsi), %dx # sched: [100:1.00] 9374 ; SLM-NEXT: #NO_APP 9375 ; SLM-NEXT: retq # sched: [4:1.00] 9376 ; 9377 ; SANDY-LABEL: test_outs: 9378 ; SANDY: # %bb.0: 9379 ; SANDY-NEXT: #APP 9380 ; SANDY-NEXT: outsb (%rsi), %dx # sched: [100:0.33] 9381 ; SANDY-NEXT: outsw (%rsi), %dx # sched: [100:0.33] 9382 ; SANDY-NEXT: outsl (%rsi), %dx # sched: [100:0.33] 9383 ; SANDY-NEXT: #NO_APP 9384 ; SANDY-NEXT: retq # sched: [1:1.00] 9385 ; 9386 ; HASWELL-LABEL: test_outs: 9387 ; HASWELL: # %bb.0: 9388 ; HASWELL-NEXT: #APP 9389 ; HASWELL-NEXT: outsb (%rsi), %dx # sched: [100:0.25] 9390 ; HASWELL-NEXT: outsw (%rsi), %dx # sched: [100:0.25] 9391 ; HASWELL-NEXT: outsl (%rsi), %dx # sched: [100:0.25] 9392 ; HASWELL-NEXT: #NO_APP 9393 ; HASWELL-NEXT: retq # sched: [7:1.00] 9394 ; 9395 ; BROADWELL-LABEL: test_outs: 9396 ; BROADWELL: # %bb.0: 9397 ; BROADWELL-NEXT: #APP 9398 ; BROADWELL-NEXT: outsb (%rsi), %dx # sched: [100:0.25] 9399 ; BROADWELL-NEXT: outsw (%rsi), %dx # sched: [100:0.25] 9400 ; BROADWELL-NEXT: outsl (%rsi), %dx # sched: [100:0.25] 9401 ; BROADWELL-NEXT: #NO_APP 9402 ; BROADWELL-NEXT: retq # sched: [7:1.00] 9403 ; 9404 ; SKYLAKE-LABEL: test_outs: 9405 ; SKYLAKE: # %bb.0: 9406 ; SKYLAKE-NEXT: #APP 9407 ; SKYLAKE-NEXT: outsb (%rsi), %dx # sched: [100:0.25] 9408 ; SKYLAKE-NEXT: outsw (%rsi), %dx # sched: [100:0.25] 9409 ; SKYLAKE-NEXT: outsl (%rsi), %dx # sched: [100:0.25] 9410 ; SKYLAKE-NEXT: #NO_APP 9411 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 9412 ; 9413 ; SKX-LABEL: test_outs: 9414 ; SKX: # %bb.0: 9415 ; SKX-NEXT: #APP 9416 ; SKX-NEXT: outsb (%rsi), %dx # sched: [100:0.25] 9417 ; SKX-NEXT: outsw (%rsi), %dx # sched: [100:0.25] 9418 ; SKX-NEXT: outsl (%rsi), %dx # sched: [100:0.25] 9419 ; SKX-NEXT: #NO_APP 9420 ; SKX-NEXT: retq # sched: [7:1.00] 9421 ; 9422 ; BTVER2-LABEL: test_outs: 9423 ; BTVER2: # %bb.0: 9424 ; BTVER2-NEXT: #APP 9425 ; BTVER2-NEXT: outsb (%rsi), %dx # sched: [100:0.50] 9426 ; BTVER2-NEXT: outsw (%rsi), %dx # sched: [100:0.50] 9427 ; BTVER2-NEXT: outsl (%rsi), %dx # sched: [100:0.50] 9428 ; BTVER2-NEXT: #NO_APP 9429 ; BTVER2-NEXT: retq # sched: [4:1.00] 9430 ; 9431 ; ZNVER1-LABEL: test_outs: 9432 ; ZNVER1: # %bb.0: 9433 ; ZNVER1-NEXT: #APP 9434 ; ZNVER1-NEXT: outsb (%rsi), %dx # sched: [100:0.25] 9435 ; ZNVER1-NEXT: outsw (%rsi), %dx # sched: [100:0.25] 9436 ; ZNVER1-NEXT: outsl (%rsi), %dx # sched: [100:0.25] 9437 ; ZNVER1-NEXT: #NO_APP 9438 ; ZNVER1-NEXT: retq # sched: [1:0.50] 9439 call void asm sideeffect "outsb \0A\09 outsw \0A\09 outsl", ""() 9440 ret void 9441 } 9442 9443 define void @test_pause() optsize { 9444 ; GENERIC-LABEL: test_pause: 9445 ; GENERIC: # %bb.0: 9446 ; GENERIC-NEXT: #APP 9447 ; GENERIC-NEXT: pause # sched: [4:1.33] 9448 ; GENERIC-NEXT: #NO_APP 9449 ; GENERIC-NEXT: retq # sched: [1:1.00] 9450 ; 9451 ; ATOM-LABEL: test_pause: 9452 ; ATOM: # %bb.0: 9453 ; ATOM-NEXT: #APP 9454 ; ATOM-NEXT: pause # sched: [17:8.50] 9455 ; ATOM-NEXT: #NO_APP 9456 ; ATOM-NEXT: retq # sched: [79:39.50] 9457 ; 9458 ; SLM-LABEL: test_pause: 9459 ; SLM: # %bb.0: 9460 ; SLM-NEXT: #APP 9461 ; SLM-NEXT: pause # sched: [1:0.50] 9462 ; SLM-NEXT: #NO_APP 9463 ; SLM-NEXT: retq # sched: [4:1.00] 9464 ; 9465 ; SANDY-LABEL: test_pause: 9466 ; SANDY: # %bb.0: 9467 ; SANDY-NEXT: #APP 9468 ; SANDY-NEXT: pause # sched: [4:1.33] 9469 ; SANDY-NEXT: #NO_APP 9470 ; SANDY-NEXT: retq # sched: [1:1.00] 9471 ; 9472 ; HASWELL-LABEL: test_pause: 9473 ; HASWELL: # %bb.0: 9474 ; HASWELL-NEXT: #APP 9475 ; HASWELL-NEXT: pause # sched: [5:1.25] 9476 ; HASWELL-NEXT: #NO_APP 9477 ; HASWELL-NEXT: retq # sched: [7:1.00] 9478 ; 9479 ; BROADWELL-LABEL: test_pause: 9480 ; BROADWELL: # %bb.0: 9481 ; BROADWELL-NEXT: #APP 9482 ; BROADWELL-NEXT: pause # sched: [5:1.25] 9483 ; BROADWELL-NEXT: #NO_APP 9484 ; BROADWELL-NEXT: retq # sched: [7:1.00] 9485 ; 9486 ; SKYLAKE-LABEL: test_pause: 9487 ; SKYLAKE: # %bb.0: 9488 ; SKYLAKE-NEXT: #APP 9489 ; SKYLAKE-NEXT: pause # sched: [4:1.00] 9490 ; SKYLAKE-NEXT: #NO_APP 9491 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 9492 ; 9493 ; SKX-LABEL: test_pause: 9494 ; SKX: # %bb.0: 9495 ; SKX-NEXT: #APP 9496 ; SKX-NEXT: pause # sched: [140:1.00] 9497 ; SKX-NEXT: #NO_APP 9498 ; SKX-NEXT: retq # sched: [7:1.00] 9499 ; 9500 ; BTVER2-LABEL: test_pause: 9501 ; BTVER2: # %bb.0: 9502 ; BTVER2-NEXT: #APP 9503 ; BTVER2-NEXT: pause # sched: [1:0.50] 9504 ; BTVER2-NEXT: #NO_APP 9505 ; BTVER2-NEXT: retq # sched: [4:1.00] 9506 ; 9507 ; ZNVER1-LABEL: test_pause: 9508 ; ZNVER1: # %bb.0: 9509 ; ZNVER1-NEXT: #APP 9510 ; ZNVER1-NEXT: pause # sched: [100:0.25] 9511 ; ZNVER1-NEXT: #NO_APP 9512 ; ZNVER1-NEXT: retq # sched: [1:0.50] 9513 call void asm sideeffect "pause", ""() 9514 ret void 9515 } 9516 9517 define void @test_pop_push() optsize { 9518 ; GENERIC-LABEL: test_pop_push: 9519 ; GENERIC: # %bb.0: 9520 ; GENERIC-NEXT: #APP 9521 ; GENERIC-NEXT: popq %fs # sched: [100:0.33] 9522 ; GENERIC-NEXT: popq %gs # sched: [100:0.33] 9523 ; GENERIC-NEXT: pushq %fs # sched: [3:1.00] 9524 ; GENERIC-NEXT: pushq %gs # sched: [5:1.00] 9525 ; GENERIC-NEXT: #NO_APP 9526 ; GENERIC-NEXT: retq # sched: [1:1.00] 9527 ; 9528 ; ATOM-LABEL: test_pop_push: 9529 ; ATOM: # %bb.0: 9530 ; ATOM-NEXT: #APP 9531 ; ATOM-NEXT: popq %fs # sched: [29:14.50] 9532 ; ATOM-NEXT: popq %gs # sched: [29:14.50] 9533 ; ATOM-NEXT: pushq %fs # sched: [2:1.00] 9534 ; ATOM-NEXT: pushq %gs # sched: [2:1.00] 9535 ; ATOM-NEXT: #NO_APP 9536 ; ATOM-NEXT: retq # sched: [79:39.50] 9537 ; 9538 ; SLM-LABEL: test_pop_push: 9539 ; SLM: # %bb.0: 9540 ; SLM-NEXT: #APP 9541 ; SLM-NEXT: popq %fs # sched: [100:1.00] 9542 ; SLM-NEXT: popq %gs # sched: [100:1.00] 9543 ; SLM-NEXT: pushq %fs # sched: [100:1.00] 9544 ; SLM-NEXT: pushq %gs # sched: [100:1.00] 9545 ; SLM-NEXT: #NO_APP 9546 ; SLM-NEXT: retq # sched: [4:1.00] 9547 ; 9548 ; SANDY-LABEL: test_pop_push: 9549 ; SANDY: # %bb.0: 9550 ; SANDY-NEXT: #APP 9551 ; SANDY-NEXT: popq %fs # sched: [100:0.33] 9552 ; SANDY-NEXT: popq %gs # sched: [100:0.33] 9553 ; SANDY-NEXT: pushq %fs # sched: [3:1.00] 9554 ; SANDY-NEXT: pushq %gs # sched: [5:1.00] 9555 ; SANDY-NEXT: #NO_APP 9556 ; SANDY-NEXT: retq # sched: [1:1.00] 9557 ; 9558 ; HASWELL-LABEL: test_pop_push: 9559 ; HASWELL: # %bb.0: 9560 ; HASWELL-NEXT: #APP 9561 ; HASWELL-NEXT: popq %fs # sched: [100:0.25] 9562 ; HASWELL-NEXT: popq %gs # sched: [100:0.25] 9563 ; HASWELL-NEXT: pushq %fs # sched: [100:0.25] 9564 ; HASWELL-NEXT: pushq %gs # sched: [100:0.25] 9565 ; HASWELL-NEXT: #NO_APP 9566 ; HASWELL-NEXT: retq # sched: [7:1.00] 9567 ; 9568 ; BROADWELL-LABEL: test_pop_push: 9569 ; BROADWELL: # %bb.0: 9570 ; BROADWELL-NEXT: #APP 9571 ; BROADWELL-NEXT: popq %fs # sched: [100:0.25] 9572 ; BROADWELL-NEXT: popq %gs # sched: [100:0.25] 9573 ; BROADWELL-NEXT: pushq %fs # sched: [100:0.25] 9574 ; BROADWELL-NEXT: pushq %gs # sched: [100:0.25] 9575 ; BROADWELL-NEXT: #NO_APP 9576 ; BROADWELL-NEXT: retq # sched: [7:1.00] 9577 ; 9578 ; SKYLAKE-LABEL: test_pop_push: 9579 ; SKYLAKE: # %bb.0: 9580 ; SKYLAKE-NEXT: #APP 9581 ; SKYLAKE-NEXT: popq %fs # sched: [100:0.25] 9582 ; SKYLAKE-NEXT: popq %gs # sched: [100:0.25] 9583 ; SKYLAKE-NEXT: pushq %fs # sched: [100:0.25] 9584 ; SKYLAKE-NEXT: pushq %gs # sched: [100:0.25] 9585 ; SKYLAKE-NEXT: #NO_APP 9586 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 9587 ; 9588 ; SKX-LABEL: test_pop_push: 9589 ; SKX: # %bb.0: 9590 ; SKX-NEXT: #APP 9591 ; SKX-NEXT: popq %fs # sched: [100:0.25] 9592 ; SKX-NEXT: popq %gs # sched: [100:0.25] 9593 ; SKX-NEXT: pushq %fs # sched: [100:0.25] 9594 ; SKX-NEXT: pushq %gs # sched: [100:0.25] 9595 ; SKX-NEXT: #NO_APP 9596 ; SKX-NEXT: retq # sched: [7:1.00] 9597 ; 9598 ; BTVER2-LABEL: test_pop_push: 9599 ; BTVER2: # %bb.0: 9600 ; BTVER2-NEXT: #APP 9601 ; BTVER2-NEXT: popq %fs # sched: [100:0.50] 9602 ; BTVER2-NEXT: popq %gs # sched: [100:0.50] 9603 ; BTVER2-NEXT: pushq %fs # sched: [100:0.50] 9604 ; BTVER2-NEXT: pushq %gs # sched: [100:0.50] 9605 ; BTVER2-NEXT: #NO_APP 9606 ; BTVER2-NEXT: retq # sched: [4:1.00] 9607 ; 9608 ; ZNVER1-LABEL: test_pop_push: 9609 ; ZNVER1: # %bb.0: 9610 ; ZNVER1-NEXT: #APP 9611 ; ZNVER1-NEXT: popq %fs # sched: [100:0.25] 9612 ; ZNVER1-NEXT: popq %gs # sched: [100:0.25] 9613 ; ZNVER1-NEXT: pushq %fs # sched: [100:0.25] 9614 ; ZNVER1-NEXT: pushq %gs # sched: [100:0.25] 9615 ; ZNVER1-NEXT: #NO_APP 9616 ; ZNVER1-NEXT: retq # sched: [1:0.50] 9617 call void asm sideeffect "pop %FS \0A\09 pop %GS \0A\09 push %FS \0A\09 push %GS", ""() 9618 ret void 9619 } 9620 define i16 @test_pop_push_16(i16 %a0, i16 *%a1) optsize { 9621 ; GENERIC-LABEL: test_pop_push_16: 9622 ; GENERIC: # %bb.0: 9623 ; GENERIC-NEXT: #APP 9624 ; GENERIC-NEXT: popw %ax # sched: [6:0.50] 9625 ; GENERIC-NEXT: popw (%rsi) # sched: [6:0.50] 9626 ; GENERIC-NEXT: pushw %di # sched: [5:1.00] 9627 ; GENERIC-NEXT: pushw (%rsi) # sched: [5:1.00] 9628 ; GENERIC-NEXT: pushw $4095 # imm = 0xFFF 9629 ; GENERIC-NEXT: # sched: [1:1.00] 9630 ; GENERIC-NEXT: pushw $7 # sched: [1:1.00] 9631 ; GENERIC-NEXT: #NO_APP 9632 ; GENERIC-NEXT: retq # sched: [1:1.00] 9633 ; 9634 ; ATOM-LABEL: test_pop_push_16: 9635 ; ATOM: # %bb.0: 9636 ; ATOM-NEXT: #APP 9637 ; ATOM-NEXT: popw %ax # sched: [2:1.00] 9638 ; ATOM-NEXT: popw (%rsi) # sched: [3:1.50] 9639 ; ATOM-NEXT: pushw %di # sched: [1:1.00] 9640 ; ATOM-NEXT: pushw (%rsi) # sched: [2:1.00] 9641 ; ATOM-NEXT: pushw $4095 # imm = 0xFFF 9642 ; ATOM-NEXT: # sched: [1:1.00] 9643 ; ATOM-NEXT: pushw $7 # sched: [1:1.00] 9644 ; ATOM-NEXT: #NO_APP 9645 ; ATOM-NEXT: retq # sched: [79:39.50] 9646 ; 9647 ; SLM-LABEL: test_pop_push_16: 9648 ; SLM: # %bb.0: 9649 ; SLM-NEXT: #APP 9650 ; SLM-NEXT: popw %ax # sched: [3:1.00] 9651 ; SLM-NEXT: popw (%rsi) # sched: [1:1.00] 9652 ; SLM-NEXT: pushw %di # sched: [1:1.00] 9653 ; SLM-NEXT: pushw (%rsi) # sched: [1:1.00] 9654 ; SLM-NEXT: pushw $4095 # imm = 0xFFF 9655 ; SLM-NEXT: # sched: [1:1.00] 9656 ; SLM-NEXT: pushw $7 # sched: [1:1.00] 9657 ; SLM-NEXT: #NO_APP 9658 ; SLM-NEXT: retq # sched: [4:1.00] 9659 ; 9660 ; SANDY-LABEL: test_pop_push_16: 9661 ; SANDY: # %bb.0: 9662 ; SANDY-NEXT: #APP 9663 ; SANDY-NEXT: popw %ax # sched: [6:0.50] 9664 ; SANDY-NEXT: popw (%rsi) # sched: [6:0.50] 9665 ; SANDY-NEXT: pushw %di # sched: [5:1.00] 9666 ; SANDY-NEXT: pushw (%rsi) # sched: [5:1.00] 9667 ; SANDY-NEXT: pushw $4095 # imm = 0xFFF 9668 ; SANDY-NEXT: # sched: [1:1.00] 9669 ; SANDY-NEXT: pushw $7 # sched: [1:1.00] 9670 ; SANDY-NEXT: #NO_APP 9671 ; SANDY-NEXT: retq # sched: [1:1.00] 9672 ; 9673 ; HASWELL-LABEL: test_pop_push_16: 9674 ; HASWELL: # %bb.0: 9675 ; HASWELL-NEXT: #APP 9676 ; HASWELL-NEXT: popw %ax # sched: [6:0.50] 9677 ; HASWELL-NEXT: popw (%rsi) # sched: [7:1.00] 9678 ; HASWELL-NEXT: pushw %di # sched: [2:1.00] 9679 ; HASWELL-NEXT: pushw (%rsi) # sched: [7:1.00] 9680 ; HASWELL-NEXT: pushw $4095 # imm = 0xFFF 9681 ; HASWELL-NEXT: # sched: [1:1.00] 9682 ; HASWELL-NEXT: pushw $7 # sched: [1:1.00] 9683 ; HASWELL-NEXT: #NO_APP 9684 ; HASWELL-NEXT: retq # sched: [7:1.00] 9685 ; 9686 ; BROADWELL-LABEL: test_pop_push_16: 9687 ; BROADWELL: # %bb.0: 9688 ; BROADWELL-NEXT: #APP 9689 ; BROADWELL-NEXT: popw %ax # sched: [6:0.50] 9690 ; BROADWELL-NEXT: popw (%rsi) # sched: [6:1.00] 9691 ; BROADWELL-NEXT: pushw %di # sched: [2:1.00] 9692 ; BROADWELL-NEXT: pushw (%rsi) # sched: [6:1.00] 9693 ; BROADWELL-NEXT: pushw $4095 # imm = 0xFFF 9694 ; BROADWELL-NEXT: # sched: [1:1.00] 9695 ; BROADWELL-NEXT: pushw $7 # sched: [1:1.00] 9696 ; BROADWELL-NEXT: #NO_APP 9697 ; BROADWELL-NEXT: retq # sched: [7:1.00] 9698 ; 9699 ; SKYLAKE-LABEL: test_pop_push_16: 9700 ; SKYLAKE: # %bb.0: 9701 ; SKYLAKE-NEXT: #APP 9702 ; SKYLAKE-NEXT: popw %ax # sched: [6:0.50] 9703 ; SKYLAKE-NEXT: popw (%rsi) # sched: [6:1.00] 9704 ; SKYLAKE-NEXT: pushw %di # sched: [2:1.00] 9705 ; SKYLAKE-NEXT: pushw (%rsi) # sched: [6:1.00] 9706 ; SKYLAKE-NEXT: pushw $4095 # imm = 0xFFF 9707 ; SKYLAKE-NEXT: # sched: [1:1.00] 9708 ; SKYLAKE-NEXT: pushw $7 # sched: [1:1.00] 9709 ; SKYLAKE-NEXT: #NO_APP 9710 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 9711 ; 9712 ; SKX-LABEL: test_pop_push_16: 9713 ; SKX: # %bb.0: 9714 ; SKX-NEXT: #APP 9715 ; SKX-NEXT: popw %ax # sched: [6:0.50] 9716 ; SKX-NEXT: popw (%rsi) # sched: [6:1.00] 9717 ; SKX-NEXT: pushw %di # sched: [2:1.00] 9718 ; SKX-NEXT: pushw (%rsi) # sched: [6:1.00] 9719 ; SKX-NEXT: pushw $4095 # imm = 0xFFF 9720 ; SKX-NEXT: # sched: [1:1.00] 9721 ; SKX-NEXT: pushw $7 # sched: [1:1.00] 9722 ; SKX-NEXT: #NO_APP 9723 ; SKX-NEXT: retq # sched: [7:1.00] 9724 ; 9725 ; BTVER2-LABEL: test_pop_push_16: 9726 ; BTVER2: # %bb.0: 9727 ; BTVER2-NEXT: #APP 9728 ; BTVER2-NEXT: popw %ax # sched: [5:1.00] 9729 ; BTVER2-NEXT: popw (%rsi) # sched: [1:1.00] 9730 ; BTVER2-NEXT: pushw %di # sched: [1:1.00] 9731 ; BTVER2-NEXT: pushw (%rsi) # sched: [1:1.00] 9732 ; BTVER2-NEXT: pushw $4095 # imm = 0xFFF 9733 ; BTVER2-NEXT: # sched: [1:1.00] 9734 ; BTVER2-NEXT: pushw $7 # sched: [1:1.00] 9735 ; BTVER2-NEXT: #NO_APP 9736 ; BTVER2-NEXT: retq # sched: [4:1.00] 9737 ; 9738 ; ZNVER1-LABEL: test_pop_push_16: 9739 ; ZNVER1: # %bb.0: 9740 ; ZNVER1-NEXT: #APP 9741 ; ZNVER1-NEXT: popw %ax # sched: [8:0.50] 9742 ; ZNVER1-NEXT: popw (%rsi) # sched: [5:0.50] 9743 ; ZNVER1-NEXT: pushw %di # sched: [1:0.50] 9744 ; ZNVER1-NEXT: pushw (%rsi) # sched: [4:0.50] 9745 ; ZNVER1-NEXT: pushw $4095 # imm = 0xFFF 9746 ; ZNVER1-NEXT: # sched: [1:0.50] 9747 ; ZNVER1-NEXT: pushw $7 # sched: [1:0.50] 9748 ; ZNVER1-NEXT: #NO_APP 9749 ; ZNVER1-NEXT: retq # sched: [1:0.50] 9750 %1 = call i16 asm sideeffect "popw $0 \0A\09 popw $2 \0A\09 pushw $1 \0A\09 pushw $2 \0A\09 pushw $3 \0A\09 pushw $4", "=r,r,*m,i,i"(i16 %a0, i16 *%a1, i16 4095, i8 7) 9751 ret i16 %1 9752 } 9753 define i64 @test_pop_push_64(i64 %a0, i64 *%a1) optsize { 9754 ; GENERIC-LABEL: test_pop_push_64: 9755 ; GENERIC: # %bb.0: 9756 ; GENERIC-NEXT: #APP 9757 ; GENERIC-NEXT: popq %rax # sched: [6:0.50] 9758 ; GENERIC-NEXT: popq (%rsi) # sched: [6:0.50] 9759 ; GENERIC-NEXT: pushq %rdi # sched: [5:1.00] 9760 ; GENERIC-NEXT: pushq (%rsi) # sched: [5:1.00] 9761 ; GENERIC-NEXT: pushq $4095 # imm = 0xFFF 9762 ; GENERIC-NEXT: # sched: [1:1.00] 9763 ; GENERIC-NEXT: pushq $7 # sched: [5:1.00] 9764 ; GENERIC-NEXT: #NO_APP 9765 ; GENERIC-NEXT: retq # sched: [1:1.00] 9766 ; 9767 ; ATOM-LABEL: test_pop_push_64: 9768 ; ATOM: # %bb.0: 9769 ; ATOM-NEXT: #APP 9770 ; ATOM-NEXT: popq %rax # sched: [1:1.00] 9771 ; ATOM-NEXT: popq (%rsi) # sched: [3:1.50] 9772 ; ATOM-NEXT: pushq %rdi # sched: [1:1.00] 9773 ; ATOM-NEXT: pushq (%rsi) # sched: [2:1.00] 9774 ; ATOM-NEXT: pushq $4095 # imm = 0xFFF 9775 ; ATOM-NEXT: # sched: [1:1.00] 9776 ; ATOM-NEXT: pushq $7 # sched: [1:1.00] 9777 ; ATOM-NEXT: #NO_APP 9778 ; ATOM-NEXT: retq # sched: [79:39.50] 9779 ; 9780 ; SLM-LABEL: test_pop_push_64: 9781 ; SLM: # %bb.0: 9782 ; SLM-NEXT: #APP 9783 ; SLM-NEXT: popq %rax # sched: [3:1.00] 9784 ; SLM-NEXT: popq (%rsi) # sched: [1:1.00] 9785 ; SLM-NEXT: pushq %rdi # sched: [1:1.00] 9786 ; SLM-NEXT: pushq (%rsi) # sched: [1:1.00] 9787 ; SLM-NEXT: pushq $4095 # imm = 0xFFF 9788 ; SLM-NEXT: # sched: [1:1.00] 9789 ; SLM-NEXT: pushq $7 # sched: [1:1.00] 9790 ; SLM-NEXT: #NO_APP 9791 ; SLM-NEXT: retq # sched: [4:1.00] 9792 ; 9793 ; SANDY-LABEL: test_pop_push_64: 9794 ; SANDY: # %bb.0: 9795 ; SANDY-NEXT: #APP 9796 ; SANDY-NEXT: popq %rax # sched: [6:0.50] 9797 ; SANDY-NEXT: popq (%rsi) # sched: [6:0.50] 9798 ; SANDY-NEXT: pushq %rdi # sched: [5:1.00] 9799 ; SANDY-NEXT: pushq (%rsi) # sched: [5:1.00] 9800 ; SANDY-NEXT: pushq $4095 # imm = 0xFFF 9801 ; SANDY-NEXT: # sched: [1:1.00] 9802 ; SANDY-NEXT: pushq $7 # sched: [5:1.00] 9803 ; SANDY-NEXT: #NO_APP 9804 ; SANDY-NEXT: retq # sched: [1:1.00] 9805 ; 9806 ; HASWELL-LABEL: test_pop_push_64: 9807 ; HASWELL: # %bb.0: 9808 ; HASWELL-NEXT: #APP 9809 ; HASWELL-NEXT: popq %rax # sched: [6:0.50] 9810 ; HASWELL-NEXT: popq (%rsi) # sched: [7:1.00] 9811 ; HASWELL-NEXT: pushq %rdi # sched: [2:1.00] 9812 ; HASWELL-NEXT: pushq (%rsi) # sched: [7:1.00] 9813 ; HASWELL-NEXT: pushq $4095 # imm = 0xFFF 9814 ; HASWELL-NEXT: # sched: [1:1.00] 9815 ; HASWELL-NEXT: pushq $7 # sched: [2:1.00] 9816 ; HASWELL-NEXT: #NO_APP 9817 ; HASWELL-NEXT: retq # sched: [7:1.00] 9818 ; 9819 ; BROADWELL-LABEL: test_pop_push_64: 9820 ; BROADWELL: # %bb.0: 9821 ; BROADWELL-NEXT: #APP 9822 ; BROADWELL-NEXT: popq %rax # sched: [6:0.50] 9823 ; BROADWELL-NEXT: popq (%rsi) # sched: [6:1.00] 9824 ; BROADWELL-NEXT: pushq %rdi # sched: [2:1.00] 9825 ; BROADWELL-NEXT: pushq (%rsi) # sched: [6:1.00] 9826 ; BROADWELL-NEXT: pushq $4095 # imm = 0xFFF 9827 ; BROADWELL-NEXT: # sched: [1:1.00] 9828 ; BROADWELL-NEXT: pushq $7 # sched: [2:1.00] 9829 ; BROADWELL-NEXT: #NO_APP 9830 ; BROADWELL-NEXT: retq # sched: [7:1.00] 9831 ; 9832 ; SKYLAKE-LABEL: test_pop_push_64: 9833 ; SKYLAKE: # %bb.0: 9834 ; SKYLAKE-NEXT: #APP 9835 ; SKYLAKE-NEXT: popq %rax # sched: [6:0.50] 9836 ; SKYLAKE-NEXT: popq (%rsi) # sched: [6:1.00] 9837 ; SKYLAKE-NEXT: pushq %rdi # sched: [2:1.00] 9838 ; SKYLAKE-NEXT: pushq (%rsi) # sched: [6:1.00] 9839 ; SKYLAKE-NEXT: pushq $4095 # imm = 0xFFF 9840 ; SKYLAKE-NEXT: # sched: [1:1.00] 9841 ; SKYLAKE-NEXT: pushq $7 # sched: [2:1.00] 9842 ; SKYLAKE-NEXT: #NO_APP 9843 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 9844 ; 9845 ; SKX-LABEL: test_pop_push_64: 9846 ; SKX: # %bb.0: 9847 ; SKX-NEXT: #APP 9848 ; SKX-NEXT: popq %rax # sched: [6:0.50] 9849 ; SKX-NEXT: popq (%rsi) # sched: [6:1.00] 9850 ; SKX-NEXT: pushq %rdi # sched: [2:1.00] 9851 ; SKX-NEXT: pushq (%rsi) # sched: [6:1.00] 9852 ; SKX-NEXT: pushq $4095 # imm = 0xFFF 9853 ; SKX-NEXT: # sched: [1:1.00] 9854 ; SKX-NEXT: pushq $7 # sched: [2:1.00] 9855 ; SKX-NEXT: #NO_APP 9856 ; SKX-NEXT: retq # sched: [7:1.00] 9857 ; 9858 ; BTVER2-LABEL: test_pop_push_64: 9859 ; BTVER2: # %bb.0: 9860 ; BTVER2-NEXT: #APP 9861 ; BTVER2-NEXT: popq %rax # sched: [5:1.00] 9862 ; BTVER2-NEXT: popq (%rsi) # sched: [1:1.00] 9863 ; BTVER2-NEXT: pushq %rdi # sched: [1:1.00] 9864 ; BTVER2-NEXT: pushq (%rsi) # sched: [1:1.00] 9865 ; BTVER2-NEXT: pushq $4095 # imm = 0xFFF 9866 ; BTVER2-NEXT: # sched: [1:1.00] 9867 ; BTVER2-NEXT: pushq $7 # sched: [1:1.00] 9868 ; BTVER2-NEXT: #NO_APP 9869 ; BTVER2-NEXT: retq # sched: [4:1.00] 9870 ; 9871 ; ZNVER1-LABEL: test_pop_push_64: 9872 ; ZNVER1: # %bb.0: 9873 ; ZNVER1-NEXT: #APP 9874 ; ZNVER1-NEXT: popq %rax # sched: [8:0.50] 9875 ; ZNVER1-NEXT: popq (%rsi) # sched: [1:0.50] 9876 ; ZNVER1-NEXT: pushq %rdi # sched: [1:0.50] 9877 ; ZNVER1-NEXT: pushq (%rsi) # sched: [1:0.50] 9878 ; ZNVER1-NEXT: pushq $4095 # imm = 0xFFF 9879 ; ZNVER1-NEXT: # sched: [1:0.50] 9880 ; ZNVER1-NEXT: pushq $7 # sched: [1:0.50] 9881 ; ZNVER1-NEXT: #NO_APP 9882 ; ZNVER1-NEXT: retq # sched: [1:0.50] 9883 %1 = call i64 asm sideeffect "popq $0 \0A\09 popq $2 \0A\09 pushq $1 \0A\09 pushq $2 \0A\09 pushq $3 \0A\09 pushq $4", "=r,r,*m,i,i"(i64 %a0, i64 *%a1, i64 4095, i8 7) 9884 ret i64 %1 9885 } 9886 9887 define void @test_popf_pushf() optsize { 9888 ; GENERIC-LABEL: test_popf_pushf: 9889 ; GENERIC: # %bb.0: 9890 ; GENERIC-NEXT: #APP 9891 ; GENERIC-NEXT: popfq # sched: [5:0.50] 9892 ; GENERIC-NEXT: pushfq # sched: [5:1.00] 9893 ; GENERIC-NEXT: #NO_APP 9894 ; GENERIC-NEXT: retq # sched: [1:1.00] 9895 ; 9896 ; ATOM-LABEL: test_popf_pushf: 9897 ; ATOM: # %bb.0: 9898 ; ATOM-NEXT: #APP 9899 ; ATOM-NEXT: popfq # sched: [26:13.00] 9900 ; ATOM-NEXT: pushfq # sched: [9:4.50] 9901 ; ATOM-NEXT: #NO_APP 9902 ; ATOM-NEXT: retq # sched: [79:39.50] 9903 ; 9904 ; SLM-LABEL: test_popf_pushf: 9905 ; SLM: # %bb.0: 9906 ; SLM-NEXT: #APP 9907 ; SLM-NEXT: popfq # sched: [3:1.00] 9908 ; SLM-NEXT: pushfq # sched: [1:1.00] 9909 ; SLM-NEXT: #NO_APP 9910 ; SLM-NEXT: retq # sched: [4:1.00] 9911 ; 9912 ; SANDY-LABEL: test_popf_pushf: 9913 ; SANDY: # %bb.0: 9914 ; SANDY-NEXT: #APP 9915 ; SANDY-NEXT: popfq # sched: [5:0.50] 9916 ; SANDY-NEXT: pushfq # sched: [5:1.00] 9917 ; SANDY-NEXT: #NO_APP 9918 ; SANDY-NEXT: retq # sched: [1:1.00] 9919 ; 9920 ; HASWELL-LABEL: test_popf_pushf: 9921 ; HASWELL: # %bb.0: 9922 ; HASWELL-NEXT: #APP 9923 ; HASWELL-NEXT: popfq # sched: [5:0.50] 9924 ; HASWELL-NEXT: pushfq # sched: [5:1.00] 9925 ; HASWELL-NEXT: #NO_APP 9926 ; HASWELL-NEXT: retq # sched: [7:1.00] 9927 ; 9928 ; BROADWELL-LABEL: test_popf_pushf: 9929 ; BROADWELL: # %bb.0: 9930 ; BROADWELL-NEXT: #APP 9931 ; BROADWELL-NEXT: popfq # sched: [22:4.25] 9932 ; BROADWELL-NEXT: pushfq # sched: [5:1.00] 9933 ; BROADWELL-NEXT: #NO_APP 9934 ; BROADWELL-NEXT: retq # sched: [7:1.00] 9935 ; 9936 ; SKYLAKE-LABEL: test_popf_pushf: 9937 ; SKYLAKE: # %bb.0: 9938 ; SKYLAKE-NEXT: #APP 9939 ; SKYLAKE-NEXT: popfq # sched: [5:0.50] 9940 ; SKYLAKE-NEXT: pushfq # sched: [5:1.00] 9941 ; SKYLAKE-NEXT: #NO_APP 9942 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 9943 ; 9944 ; SKX-LABEL: test_popf_pushf: 9945 ; SKX: # %bb.0: 9946 ; SKX-NEXT: #APP 9947 ; SKX-NEXT: popfq # sched: [5:0.50] 9948 ; SKX-NEXT: pushfq # sched: [5:1.00] 9949 ; SKX-NEXT: #NO_APP 9950 ; SKX-NEXT: retq # sched: [7:1.00] 9951 ; 9952 ; BTVER2-LABEL: test_popf_pushf: 9953 ; BTVER2: # %bb.0: 9954 ; BTVER2-NEXT: #APP 9955 ; BTVER2-NEXT: popfq # sched: [5:1.00] 9956 ; BTVER2-NEXT: pushfq # sched: [1:1.00] 9957 ; BTVER2-NEXT: #NO_APP 9958 ; BTVER2-NEXT: retq # sched: [4:1.00] 9959 ; 9960 ; ZNVER1-LABEL: test_popf_pushf: 9961 ; ZNVER1: # %bb.0: 9962 ; ZNVER1-NEXT: #APP 9963 ; ZNVER1-NEXT: popfq # sched: [8:0.50] 9964 ; ZNVER1-NEXT: pushfq # sched: [1:0.50] 9965 ; ZNVER1-NEXT: #NO_APP 9966 ; ZNVER1-NEXT: retq # sched: [1:0.50] 9967 call void asm sideeffect "popf \0A\09 pushf", ""() 9968 ret void 9969 } 9970 9971 define void @test_rcl_rcr_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 9972 ; GENERIC-LABEL: test_rcl_rcr_8: 9973 ; GENERIC: # %bb.0: 9974 ; GENERIC-NEXT: #APP 9975 ; GENERIC-NEXT: rclb %dil # sched: [1:0.50] 9976 ; GENERIC-NEXT: rcrb %dil # sched: [1:0.50] 9977 ; GENERIC-NEXT: rclb (%rdx) # sched: [6:1.00] 9978 ; GENERIC-NEXT: rcrb (%rdx) # sched: [6:1.00] 9979 ; GENERIC-NEXT: rclb $7, %dil # sched: [1:0.50] 9980 ; GENERIC-NEXT: rcrb $7, %dil # sched: [1:0.50] 9981 ; GENERIC-NEXT: rclb $7, (%rdx) # sched: [6:1.00] 9982 ; GENERIC-NEXT: rcrb $7, (%rdx) # sched: [6:1.00] 9983 ; GENERIC-NEXT: rclb %cl, %dil # sched: [1:0.50] 9984 ; GENERIC-NEXT: rcrb %cl, %dil # sched: [1:0.50] 9985 ; GENERIC-NEXT: rclb %cl, (%rdx) # sched: [6:1.00] 9986 ; GENERIC-NEXT: rcrb %cl, (%rdx) # sched: [6:1.00] 9987 ; GENERIC-NEXT: #NO_APP 9988 ; GENERIC-NEXT: retq # sched: [1:1.00] 9989 ; 9990 ; ATOM-LABEL: test_rcl_rcr_8: 9991 ; ATOM: # %bb.0: 9992 ; ATOM-NEXT: #APP 9993 ; ATOM-NEXT: rclb %dil # sched: [1:1.00] 9994 ; ATOM-NEXT: rcrb %dil # sched: [1:1.00] 9995 ; ATOM-NEXT: rclb (%rdx) # sched: [1:1.00] 9996 ; ATOM-NEXT: rcrb (%rdx) # sched: [1:1.00] 9997 ; ATOM-NEXT: rclb $7, %dil # sched: [1:1.00] 9998 ; ATOM-NEXT: rcrb $7, %dil # sched: [1:1.00] 9999 ; ATOM-NEXT: rclb $7, (%rdx) # sched: [1:1.00] 10000 ; ATOM-NEXT: rcrb $7, (%rdx) # sched: [1:1.00] 10001 ; ATOM-NEXT: rclb %cl, %dil # sched: [1:1.00] 10002 ; ATOM-NEXT: rcrb %cl, %dil # sched: [1:1.00] 10003 ; ATOM-NEXT: rclb %cl, (%rdx) # sched: [1:1.00] 10004 ; ATOM-NEXT: rcrb %cl, (%rdx) # sched: [1:1.00] 10005 ; ATOM-NEXT: #NO_APP 10006 ; ATOM-NEXT: retq # sched: [79:39.50] 10007 ; 10008 ; SLM-LABEL: test_rcl_rcr_8: 10009 ; SLM: # %bb.0: 10010 ; SLM-NEXT: #APP 10011 ; SLM-NEXT: rclb %dil # sched: [1:1.00] 10012 ; SLM-NEXT: rcrb %dil # sched: [1:1.00] 10013 ; SLM-NEXT: rclb (%rdx) # sched: [4:2.00] 10014 ; SLM-NEXT: rcrb (%rdx) # sched: [4:2.00] 10015 ; SLM-NEXT: rclb $7, %dil # sched: [1:1.00] 10016 ; SLM-NEXT: rcrb $7, %dil # sched: [1:1.00] 10017 ; SLM-NEXT: rclb $7, (%rdx) # sched: [4:2.00] 10018 ; SLM-NEXT: rcrb $7, (%rdx) # sched: [4:2.00] 10019 ; SLM-NEXT: rclb %cl, %dil # sched: [1:1.00] 10020 ; SLM-NEXT: rcrb %cl, %dil # sched: [1:1.00] 10021 ; SLM-NEXT: rclb %cl, (%rdx) # sched: [4:2.00] 10022 ; SLM-NEXT: rcrb %cl, (%rdx) # sched: [4:2.00] 10023 ; SLM-NEXT: #NO_APP 10024 ; SLM-NEXT: retq # sched: [4:1.00] 10025 ; 10026 ; SANDY-LABEL: test_rcl_rcr_8: 10027 ; SANDY: # %bb.0: 10028 ; SANDY-NEXT: #APP 10029 ; SANDY-NEXT: rclb %dil # sched: [1:0.50] 10030 ; SANDY-NEXT: rcrb %dil # sched: [1:0.50] 10031 ; SANDY-NEXT: rclb (%rdx) # sched: [6:1.00] 10032 ; SANDY-NEXT: rcrb (%rdx) # sched: [6:1.00] 10033 ; SANDY-NEXT: rclb $7, %dil # sched: [1:0.50] 10034 ; SANDY-NEXT: rcrb $7, %dil # sched: [1:0.50] 10035 ; SANDY-NEXT: rclb $7, (%rdx) # sched: [6:1.00] 10036 ; SANDY-NEXT: rcrb $7, (%rdx) # sched: [6:1.00] 10037 ; SANDY-NEXT: rclb %cl, %dil # sched: [1:0.50] 10038 ; SANDY-NEXT: rcrb %cl, %dil # sched: [1:0.50] 10039 ; SANDY-NEXT: rclb %cl, (%rdx) # sched: [6:1.00] 10040 ; SANDY-NEXT: rcrb %cl, (%rdx) # sched: [6:1.00] 10041 ; SANDY-NEXT: #NO_APP 10042 ; SANDY-NEXT: retq # sched: [1:1.00] 10043 ; 10044 ; HASWELL-LABEL: test_rcl_rcr_8: 10045 ; HASWELL: # %bb.0: 10046 ; HASWELL-NEXT: #APP 10047 ; HASWELL-NEXT: rclb %dil # sched: [3:0.75] 10048 ; HASWELL-NEXT: rcrb %dil # sched: [3:0.75] 10049 ; HASWELL-NEXT: rclb (%rdx) # sched: [9:0.75] 10050 ; HASWELL-NEXT: rcrb (%rdx) # sched: [9:0.75] 10051 ; HASWELL-NEXT: rclb $7, %dil # sched: [3:0.75] 10052 ; HASWELL-NEXT: rcrb $7, %dil # sched: [3:0.75] 10053 ; HASWELL-NEXT: rclb $7, (%rdx) # sched: [9:0.75] 10054 ; HASWELL-NEXT: rcrb $7, (%rdx) # sched: [9:0.75] 10055 ; HASWELL-NEXT: rclb %cl, %dil # sched: [11:2.25] 10056 ; HASWELL-NEXT: rcrb %cl, %dil # sched: [14:2.50] 10057 ; HASWELL-NEXT: rclb %cl, (%rdx) # sched: [16:2.00] 10058 ; HASWELL-NEXT: rcrb %cl, (%rdx) # sched: [19:2.25] 10059 ; HASWELL-NEXT: #NO_APP 10060 ; HASWELL-NEXT: retq # sched: [7:1.00] 10061 ; 10062 ; BROADWELL-LABEL: test_rcl_rcr_8: 10063 ; BROADWELL: # %bb.0: 10064 ; BROADWELL-NEXT: #APP 10065 ; BROADWELL-NEXT: rclb %dil # sched: [3:0.75] 10066 ; BROADWELL-NEXT: rcrb %dil # sched: [3:0.75] 10067 ; BROADWELL-NEXT: rclb (%rdx) # sched: [8:0.75] 10068 ; BROADWELL-NEXT: rcrb (%rdx) # sched: [8:0.75] 10069 ; BROADWELL-NEXT: rclb $7, %dil # sched: [3:0.75] 10070 ; BROADWELL-NEXT: rcrb $7, %dil # sched: [3:0.75] 10071 ; BROADWELL-NEXT: rclb $7, (%rdx) # sched: [8:0.75] 10072 ; BROADWELL-NEXT: rcrb $7, (%rdx) # sched: [8:0.75] 10073 ; BROADWELL-NEXT: rclb %cl, %dil # sched: [11:2.25] 10074 ; BROADWELL-NEXT: rcrb %cl, %dil # sched: [14:2.50] 10075 ; BROADWELL-NEXT: rclb %cl, (%rdx) # sched: [15:2.00] 10076 ; BROADWELL-NEXT: rcrb %cl, (%rdx) # sched: [18:2.25] 10077 ; BROADWELL-NEXT: #NO_APP 10078 ; BROADWELL-NEXT: retq # sched: [7:1.00] 10079 ; 10080 ; SKYLAKE-LABEL: test_rcl_rcr_8: 10081 ; SKYLAKE: # %bb.0: 10082 ; SKYLAKE-NEXT: #APP 10083 ; SKYLAKE-NEXT: rclb %dil # sched: [3:0.75] 10084 ; SKYLAKE-NEXT: rcrb %dil # sched: [3:0.75] 10085 ; SKYLAKE-NEXT: rclb (%rdx) # sched: [8:0.75] 10086 ; SKYLAKE-NEXT: rcrb (%rdx) # sched: [8:0.75] 10087 ; SKYLAKE-NEXT: rclb $7, %dil # sched: [3:0.75] 10088 ; SKYLAKE-NEXT: rcrb $7, %dil # sched: [3:0.75] 10089 ; SKYLAKE-NEXT: rclb $7, (%rdx) # sched: [8:0.75] 10090 ; SKYLAKE-NEXT: rcrb $7, (%rdx) # sched: [8:0.75] 10091 ; SKYLAKE-NEXT: rclb %cl, %dil # sched: [11:2.50] 10092 ; SKYLAKE-NEXT: rcrb %cl, %dil # sched: [14:2.50] 10093 ; SKYLAKE-NEXT: rclb %cl, (%rdx) # sched: [15:2.50] 10094 ; SKYLAKE-NEXT: rcrb %cl, (%rdx) # sched: [18:2.25] 10095 ; SKYLAKE-NEXT: #NO_APP 10096 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 10097 ; 10098 ; SKX-LABEL: test_rcl_rcr_8: 10099 ; SKX: # %bb.0: 10100 ; SKX-NEXT: #APP 10101 ; SKX-NEXT: rclb %dil # sched: [3:0.75] 10102 ; SKX-NEXT: rcrb %dil # sched: [3:0.75] 10103 ; SKX-NEXT: rclb (%rdx) # sched: [8:0.75] 10104 ; SKX-NEXT: rcrb (%rdx) # sched: [8:0.75] 10105 ; SKX-NEXT: rclb $7, %dil # sched: [3:0.75] 10106 ; SKX-NEXT: rcrb $7, %dil # sched: [3:0.75] 10107 ; SKX-NEXT: rclb $7, (%rdx) # sched: [8:0.75] 10108 ; SKX-NEXT: rcrb $7, (%rdx) # sched: [8:0.75] 10109 ; SKX-NEXT: rclb %cl, %dil # sched: [11:2.50] 10110 ; SKX-NEXT: rcrb %cl, %dil # sched: [14:2.50] 10111 ; SKX-NEXT: rclb %cl, (%rdx) # sched: [15:2.50] 10112 ; SKX-NEXT: rcrb %cl, (%rdx) # sched: [18:2.25] 10113 ; SKX-NEXT: #NO_APP 10114 ; SKX-NEXT: retq # sched: [7:1.00] 10115 ; 10116 ; BTVER2-LABEL: test_rcl_rcr_8: 10117 ; BTVER2: # %bb.0: 10118 ; BTVER2-NEXT: #APP 10119 ; BTVER2-NEXT: rclb %dil # sched: [1:0.50] 10120 ; BTVER2-NEXT: rcrb %dil # sched: [1:0.50] 10121 ; BTVER2-NEXT: rclb (%rdx) # sched: [4:1.00] 10122 ; BTVER2-NEXT: rcrb (%rdx) # sched: [4:1.00] 10123 ; BTVER2-NEXT: rclb $7, %dil # sched: [1:0.50] 10124 ; BTVER2-NEXT: rcrb $7, %dil # sched: [1:0.50] 10125 ; BTVER2-NEXT: rclb $7, (%rdx) # sched: [4:1.00] 10126 ; BTVER2-NEXT: rcrb $7, (%rdx) # sched: [4:1.00] 10127 ; BTVER2-NEXT: rclb %cl, %dil # sched: [1:0.50] 10128 ; BTVER2-NEXT: rcrb %cl, %dil # sched: [1:0.50] 10129 ; BTVER2-NEXT: rclb %cl, (%rdx) # sched: [4:1.00] 10130 ; BTVER2-NEXT: rcrb %cl, (%rdx) # sched: [4:1.00] 10131 ; BTVER2-NEXT: #NO_APP 10132 ; BTVER2-NEXT: retq # sched: [4:1.00] 10133 ; 10134 ; ZNVER1-LABEL: test_rcl_rcr_8: 10135 ; ZNVER1: # %bb.0: 10136 ; ZNVER1-NEXT: #APP 10137 ; ZNVER1-NEXT: rclb %dil # sched: [1:0.25] 10138 ; ZNVER1-NEXT: rcrb %dil # sched: [1:0.25] 10139 ; ZNVER1-NEXT: rclb (%rdx) # sched: [100:0.25] 10140 ; ZNVER1-NEXT: rcrb (%rdx) # sched: [100:0.25] 10141 ; ZNVER1-NEXT: rclb $7, %dil # sched: [1:0.25] 10142 ; ZNVER1-NEXT: rcrb $7, %dil # sched: [1:0.25] 10143 ; ZNVER1-NEXT: rclb $7, (%rdx) # sched: [100:0.25] 10144 ; ZNVER1-NEXT: rcrb $7, (%rdx) # sched: [100:0.25] 10145 ; ZNVER1-NEXT: rclb %cl, %dil # sched: [1:0.25] 10146 ; ZNVER1-NEXT: rcrb %cl, %dil # sched: [1:0.25] 10147 ; ZNVER1-NEXT: rclb %cl, (%rdx) # sched: [100:0.25] 10148 ; ZNVER1-NEXT: rcrb %cl, (%rdx) # sched: [100:0.25] 10149 ; ZNVER1-NEXT: #NO_APP 10150 ; ZNVER1-NEXT: retq # sched: [1:0.50] 10151 call void asm sideeffect "rclb $0 \0A\09 rcrb $0 \0A\09 rclb $2 \0A\09 rcrb $2 \0A\09 rclb $3, $0 \0A\09 rcrb $3, $0 \0A\09 rclb $3, $2 \0A\09 rcrb $3, $2 \0A\09 rclb %CL, $0 \0A\09 rcrb %CL, $0 \0A\09 rclb %CL, $2 \0A\09 rcrb %CL, $2", "r,r,*m,i"(i8 %a0, i8 %a1, i8 *%a2, i8 7) 10152 ret void 10153 } 10154 define void @test_rcl_rcr_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 10155 ; GENERIC-LABEL: test_rcl_rcr_16: 10156 ; GENERIC: # %bb.0: 10157 ; GENERIC-NEXT: #APP 10158 ; GENERIC-NEXT: rclw %di # sched: [1:0.50] 10159 ; GENERIC-NEXT: rcrw %di # sched: [1:0.50] 10160 ; GENERIC-NEXT: rclw (%rdx) # sched: [6:1.00] 10161 ; GENERIC-NEXT: rcrw (%rdx) # sched: [6:1.00] 10162 ; GENERIC-NEXT: rclw $7, %di # sched: [1:0.50] 10163 ; GENERIC-NEXT: rcrw $7, %di # sched: [1:0.50] 10164 ; GENERIC-NEXT: rclw $7, (%rdx) # sched: [6:1.00] 10165 ; GENERIC-NEXT: rcrw $7, (%rdx) # sched: [6:1.00] 10166 ; GENERIC-NEXT: rclw %cl, %di # sched: [1:0.50] 10167 ; GENERIC-NEXT: rcrw %cl, %di # sched: [1:0.50] 10168 ; GENERIC-NEXT: rclw %cl, (%rdx) # sched: [6:1.00] 10169 ; GENERIC-NEXT: rcrw %cl, (%rdx) # sched: [6:1.00] 10170 ; GENERIC-NEXT: #NO_APP 10171 ; GENERIC-NEXT: retq # sched: [1:1.00] 10172 ; 10173 ; ATOM-LABEL: test_rcl_rcr_16: 10174 ; ATOM: # %bb.0: 10175 ; ATOM-NEXT: #APP 10176 ; ATOM-NEXT: rclw %di # sched: [1:1.00] 10177 ; ATOM-NEXT: rcrw %di # sched: [1:1.00] 10178 ; ATOM-NEXT: rclw (%rdx) # sched: [1:1.00] 10179 ; ATOM-NEXT: rcrw (%rdx) # sched: [1:1.00] 10180 ; ATOM-NEXT: rclw $7, %di # sched: [1:1.00] 10181 ; ATOM-NEXT: rcrw $7, %di # sched: [1:1.00] 10182 ; ATOM-NEXT: rclw $7, (%rdx) # sched: [1:1.00] 10183 ; ATOM-NEXT: rcrw $7, (%rdx) # sched: [1:1.00] 10184 ; ATOM-NEXT: rclw %cl, %di # sched: [1:1.00] 10185 ; ATOM-NEXT: rcrw %cl, %di # sched: [1:1.00] 10186 ; ATOM-NEXT: rclw %cl, (%rdx) # sched: [1:1.00] 10187 ; ATOM-NEXT: rcrw %cl, (%rdx) # sched: [1:1.00] 10188 ; ATOM-NEXT: #NO_APP 10189 ; ATOM-NEXT: retq # sched: [79:39.50] 10190 ; 10191 ; SLM-LABEL: test_rcl_rcr_16: 10192 ; SLM: # %bb.0: 10193 ; SLM-NEXT: #APP 10194 ; SLM-NEXT: rclw %di # sched: [1:1.00] 10195 ; SLM-NEXT: rcrw %di # sched: [1:1.00] 10196 ; SLM-NEXT: rclw (%rdx) # sched: [4:2.00] 10197 ; SLM-NEXT: rcrw (%rdx) # sched: [4:2.00] 10198 ; SLM-NEXT: rclw $7, %di # sched: [1:1.00] 10199 ; SLM-NEXT: rcrw $7, %di # sched: [1:1.00] 10200 ; SLM-NEXT: rclw $7, (%rdx) # sched: [4:2.00] 10201 ; SLM-NEXT: rcrw $7, (%rdx) # sched: [4:2.00] 10202 ; SLM-NEXT: rclw %cl, %di # sched: [1:1.00] 10203 ; SLM-NEXT: rcrw %cl, %di # sched: [1:1.00] 10204 ; SLM-NEXT: rclw %cl, (%rdx) # sched: [4:2.00] 10205 ; SLM-NEXT: rcrw %cl, (%rdx) # sched: [4:2.00] 10206 ; SLM-NEXT: #NO_APP 10207 ; SLM-NEXT: retq # sched: [4:1.00] 10208 ; 10209 ; SANDY-LABEL: test_rcl_rcr_16: 10210 ; SANDY: # %bb.0: 10211 ; SANDY-NEXT: #APP 10212 ; SANDY-NEXT: rclw %di # sched: [1:0.50] 10213 ; SANDY-NEXT: rcrw %di # sched: [1:0.50] 10214 ; SANDY-NEXT: rclw (%rdx) # sched: [6:1.00] 10215 ; SANDY-NEXT: rcrw (%rdx) # sched: [6:1.00] 10216 ; SANDY-NEXT: rclw $7, %di # sched: [1:0.50] 10217 ; SANDY-NEXT: rcrw $7, %di # sched: [1:0.50] 10218 ; SANDY-NEXT: rclw $7, (%rdx) # sched: [6:1.00] 10219 ; SANDY-NEXT: rcrw $7, (%rdx) # sched: [6:1.00] 10220 ; SANDY-NEXT: rclw %cl, %di # sched: [1:0.50] 10221 ; SANDY-NEXT: rcrw %cl, %di # sched: [1:0.50] 10222 ; SANDY-NEXT: rclw %cl, (%rdx) # sched: [6:1.00] 10223 ; SANDY-NEXT: rcrw %cl, (%rdx) # sched: [6:1.00] 10224 ; SANDY-NEXT: #NO_APP 10225 ; SANDY-NEXT: retq # sched: [1:1.00] 10226 ; 10227 ; HASWELL-LABEL: test_rcl_rcr_16: 10228 ; HASWELL: # %bb.0: 10229 ; HASWELL-NEXT: #APP 10230 ; HASWELL-NEXT: rclw %di # sched: [3:0.75] 10231 ; HASWELL-NEXT: rcrw %di # sched: [3:0.75] 10232 ; HASWELL-NEXT: rclw (%rdx) # sched: [9:0.75] 10233 ; HASWELL-NEXT: rcrw (%rdx) # sched: [9:0.75] 10234 ; HASWELL-NEXT: rclw $7, %di # sched: [3:0.75] 10235 ; HASWELL-NEXT: rcrw $7, %di # sched: [3:0.75] 10236 ; HASWELL-NEXT: rclw $7, (%rdx) # sched: [9:0.75] 10237 ; HASWELL-NEXT: rcrw $7, (%rdx) # sched: [9:0.75] 10238 ; HASWELL-NEXT: rclw %cl, %di # sched: [11:2.00] 10239 ; HASWELL-NEXT: rcrw %cl, %di # sched: [11:2.00] 10240 ; HASWELL-NEXT: rclw %cl, (%rdx) # sched: [16:2.00] 10241 ; HASWELL-NEXT: rcrw %cl, (%rdx) # sched: [19:2.25] 10242 ; HASWELL-NEXT: #NO_APP 10243 ; HASWELL-NEXT: retq # sched: [7:1.00] 10244 ; 10245 ; BROADWELL-LABEL: test_rcl_rcr_16: 10246 ; BROADWELL: # %bb.0: 10247 ; BROADWELL-NEXT: #APP 10248 ; BROADWELL-NEXT: rclw %di # sched: [3:0.75] 10249 ; BROADWELL-NEXT: rcrw %di # sched: [3:0.75] 10250 ; BROADWELL-NEXT: rclw (%rdx) # sched: [8:0.75] 10251 ; BROADWELL-NEXT: rcrw (%rdx) # sched: [8:0.75] 10252 ; BROADWELL-NEXT: rclw $7, %di # sched: [3:0.75] 10253 ; BROADWELL-NEXT: rcrw $7, %di # sched: [3:0.75] 10254 ; BROADWELL-NEXT: rclw $7, (%rdx) # sched: [8:0.75] 10255 ; BROADWELL-NEXT: rcrw $7, (%rdx) # sched: [8:0.75] 10256 ; BROADWELL-NEXT: rclw %cl, %di # sched: [11:2.00] 10257 ; BROADWELL-NEXT: rcrw %cl, %di # sched: [11:2.00] 10258 ; BROADWELL-NEXT: rclw %cl, (%rdx) # sched: [15:2.00] 10259 ; BROADWELL-NEXT: rcrw %cl, (%rdx) # sched: [18:2.25] 10260 ; BROADWELL-NEXT: #NO_APP 10261 ; BROADWELL-NEXT: retq # sched: [7:1.00] 10262 ; 10263 ; SKYLAKE-LABEL: test_rcl_rcr_16: 10264 ; SKYLAKE: # %bb.0: 10265 ; SKYLAKE-NEXT: #APP 10266 ; SKYLAKE-NEXT: rclw %di # sched: [3:0.75] 10267 ; SKYLAKE-NEXT: rcrw %di # sched: [3:0.75] 10268 ; SKYLAKE-NEXT: rclw (%rdx) # sched: [8:0.75] 10269 ; SKYLAKE-NEXT: rcrw (%rdx) # sched: [8:0.75] 10270 ; SKYLAKE-NEXT: rclw $7, %di # sched: [3:0.75] 10271 ; SKYLAKE-NEXT: rcrw $7, %di # sched: [3:0.75] 10272 ; SKYLAKE-NEXT: rclw $7, (%rdx) # sched: [8:0.75] 10273 ; SKYLAKE-NEXT: rcrw $7, (%rdx) # sched: [8:0.75] 10274 ; SKYLAKE-NEXT: rclw %cl, %di # sched: [11:2.00] 10275 ; SKYLAKE-NEXT: rcrw %cl, %di # sched: [11:2.00] 10276 ; SKYLAKE-NEXT: rclw %cl, (%rdx) # sched: [15:2.50] 10277 ; SKYLAKE-NEXT: rcrw %cl, (%rdx) # sched: [18:2.25] 10278 ; SKYLAKE-NEXT: #NO_APP 10279 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 10280 ; 10281 ; SKX-LABEL: test_rcl_rcr_16: 10282 ; SKX: # %bb.0: 10283 ; SKX-NEXT: #APP 10284 ; SKX-NEXT: rclw %di # sched: [3:0.75] 10285 ; SKX-NEXT: rcrw %di # sched: [3:0.75] 10286 ; SKX-NEXT: rclw (%rdx) # sched: [8:0.75] 10287 ; SKX-NEXT: rcrw (%rdx) # sched: [8:0.75] 10288 ; SKX-NEXT: rclw $7, %di # sched: [3:0.75] 10289 ; SKX-NEXT: rcrw $7, %di # sched: [3:0.75] 10290 ; SKX-NEXT: rclw $7, (%rdx) # sched: [8:0.75] 10291 ; SKX-NEXT: rcrw $7, (%rdx) # sched: [8:0.75] 10292 ; SKX-NEXT: rclw %cl, %di # sched: [11:2.00] 10293 ; SKX-NEXT: rcrw %cl, %di # sched: [11:2.00] 10294 ; SKX-NEXT: rclw %cl, (%rdx) # sched: [15:2.50] 10295 ; SKX-NEXT: rcrw %cl, (%rdx) # sched: [18:2.25] 10296 ; SKX-NEXT: #NO_APP 10297 ; SKX-NEXT: retq # sched: [7:1.00] 10298 ; 10299 ; BTVER2-LABEL: test_rcl_rcr_16: 10300 ; BTVER2: # %bb.0: 10301 ; BTVER2-NEXT: #APP 10302 ; BTVER2-NEXT: rclw %di # sched: [1:0.50] 10303 ; BTVER2-NEXT: rcrw %di # sched: [1:0.50] 10304 ; BTVER2-NEXT: rclw (%rdx) # sched: [4:1.00] 10305 ; BTVER2-NEXT: rcrw (%rdx) # sched: [4:1.00] 10306 ; BTVER2-NEXT: rclw $7, %di # sched: [1:0.50] 10307 ; BTVER2-NEXT: rcrw $7, %di # sched: [1:0.50] 10308 ; BTVER2-NEXT: rclw $7, (%rdx) # sched: [4:1.00] 10309 ; BTVER2-NEXT: rcrw $7, (%rdx) # sched: [4:1.00] 10310 ; BTVER2-NEXT: rclw %cl, %di # sched: [1:0.50] 10311 ; BTVER2-NEXT: rcrw %cl, %di # sched: [1:0.50] 10312 ; BTVER2-NEXT: rclw %cl, (%rdx) # sched: [4:1.00] 10313 ; BTVER2-NEXT: rcrw %cl, (%rdx) # sched: [4:1.00] 10314 ; BTVER2-NEXT: #NO_APP 10315 ; BTVER2-NEXT: retq # sched: [4:1.00] 10316 ; 10317 ; ZNVER1-LABEL: test_rcl_rcr_16: 10318 ; ZNVER1: # %bb.0: 10319 ; ZNVER1-NEXT: #APP 10320 ; ZNVER1-NEXT: rclw %di # sched: [1:0.25] 10321 ; ZNVER1-NEXT: rcrw %di # sched: [1:0.25] 10322 ; ZNVER1-NEXT: rclw (%rdx) # sched: [100:0.25] 10323 ; ZNVER1-NEXT: rcrw (%rdx) # sched: [100:0.25] 10324 ; ZNVER1-NEXT: rclw $7, %di # sched: [1:0.25] 10325 ; ZNVER1-NEXT: rcrw $7, %di # sched: [1:0.25] 10326 ; ZNVER1-NEXT: rclw $7, (%rdx) # sched: [100:0.25] 10327 ; ZNVER1-NEXT: rcrw $7, (%rdx) # sched: [100:0.25] 10328 ; ZNVER1-NEXT: rclw %cl, %di # sched: [1:0.25] 10329 ; ZNVER1-NEXT: rcrw %cl, %di # sched: [1:0.25] 10330 ; ZNVER1-NEXT: rclw %cl, (%rdx) # sched: [100:0.25] 10331 ; ZNVER1-NEXT: rcrw %cl, (%rdx) # sched: [100:0.25] 10332 ; ZNVER1-NEXT: #NO_APP 10333 ; ZNVER1-NEXT: retq # sched: [1:0.50] 10334 call void asm sideeffect "rclw $0 \0A\09 rcrw $0 \0A\09 rclw $2 \0A\09 rcrw $2 \0A\09 rclw $3, $0 \0A\09 rcrw $3, $0 \0A\09 rclw $3, $2 \0A\09 rcrw $3, $2 \0A\09 rclw %CL, $0 \0A\09 rcrw %CL, $0 \0A\09 rclw %CL, $2 \0A\09 rcrw %CL, $2", "r,r,*m,i"(i16 %a0, i16 %a1, i16 *%a2, i8 7) 10335 ret void 10336 } 10337 define void @test_rcl_rcr_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 10338 ; GENERIC-LABEL: test_rcl_rcr_32: 10339 ; GENERIC: # %bb.0: 10340 ; GENERIC-NEXT: #APP 10341 ; GENERIC-NEXT: rcll %edi # sched: [1:0.50] 10342 ; GENERIC-NEXT: rcrl %edi # sched: [1:0.50] 10343 ; GENERIC-NEXT: rcll (%rdx) # sched: [6:1.00] 10344 ; GENERIC-NEXT: rcrl (%rdx) # sched: [6:1.00] 10345 ; GENERIC-NEXT: rcll $7, %edi # sched: [1:0.50] 10346 ; GENERIC-NEXT: rcrl $7, %edi # sched: [1:0.50] 10347 ; GENERIC-NEXT: rcll $7, (%rdx) # sched: [6:1.00] 10348 ; GENERIC-NEXT: rcrl $7, (%rdx) # sched: [6:1.00] 10349 ; GENERIC-NEXT: rcll %cl, %edi # sched: [1:0.50] 10350 ; GENERIC-NEXT: rcrl %cl, %edi # sched: [1:0.50] 10351 ; GENERIC-NEXT: rcll %cl, (%rdx) # sched: [6:1.00] 10352 ; GENERIC-NEXT: rcrl %cl, (%rdx) # sched: [6:1.00] 10353 ; GENERIC-NEXT: #NO_APP 10354 ; GENERIC-NEXT: retq # sched: [1:1.00] 10355 ; 10356 ; ATOM-LABEL: test_rcl_rcr_32: 10357 ; ATOM: # %bb.0: 10358 ; ATOM-NEXT: #APP 10359 ; ATOM-NEXT: rcll %edi # sched: [1:1.00] 10360 ; ATOM-NEXT: rcrl %edi # sched: [1:1.00] 10361 ; ATOM-NEXT: rcll (%rdx) # sched: [1:1.00] 10362 ; ATOM-NEXT: rcrl (%rdx) # sched: [1:1.00] 10363 ; ATOM-NEXT: rcll $7, %edi # sched: [1:1.00] 10364 ; ATOM-NEXT: rcrl $7, %edi # sched: [1:1.00] 10365 ; ATOM-NEXT: rcll $7, (%rdx) # sched: [1:1.00] 10366 ; ATOM-NEXT: rcrl $7, (%rdx) # sched: [1:1.00] 10367 ; ATOM-NEXT: rcll %cl, %edi # sched: [1:1.00] 10368 ; ATOM-NEXT: rcrl %cl, %edi # sched: [1:1.00] 10369 ; ATOM-NEXT: rcll %cl, (%rdx) # sched: [1:1.00] 10370 ; ATOM-NEXT: rcrl %cl, (%rdx) # sched: [1:1.00] 10371 ; ATOM-NEXT: #NO_APP 10372 ; ATOM-NEXT: retq # sched: [79:39.50] 10373 ; 10374 ; SLM-LABEL: test_rcl_rcr_32: 10375 ; SLM: # %bb.0: 10376 ; SLM-NEXT: #APP 10377 ; SLM-NEXT: rcll %edi # sched: [1:1.00] 10378 ; SLM-NEXT: rcrl %edi # sched: [1:1.00] 10379 ; SLM-NEXT: rcll (%rdx) # sched: [4:2.00] 10380 ; SLM-NEXT: rcrl (%rdx) # sched: [4:2.00] 10381 ; SLM-NEXT: rcll $7, %edi # sched: [1:1.00] 10382 ; SLM-NEXT: rcrl $7, %edi # sched: [1:1.00] 10383 ; SLM-NEXT: rcll $7, (%rdx) # sched: [4:2.00] 10384 ; SLM-NEXT: rcrl $7, (%rdx) # sched: [4:2.00] 10385 ; SLM-NEXT: rcll %cl, %edi # sched: [1:1.00] 10386 ; SLM-NEXT: rcrl %cl, %edi # sched: [1:1.00] 10387 ; SLM-NEXT: rcll %cl, (%rdx) # sched: [4:2.00] 10388 ; SLM-NEXT: rcrl %cl, (%rdx) # sched: [4:2.00] 10389 ; SLM-NEXT: #NO_APP 10390 ; SLM-NEXT: retq # sched: [4:1.00] 10391 ; 10392 ; SANDY-LABEL: test_rcl_rcr_32: 10393 ; SANDY: # %bb.0: 10394 ; SANDY-NEXT: #APP 10395 ; SANDY-NEXT: rcll %edi # sched: [1:0.50] 10396 ; SANDY-NEXT: rcrl %edi # sched: [1:0.50] 10397 ; SANDY-NEXT: rcll (%rdx) # sched: [6:1.00] 10398 ; SANDY-NEXT: rcrl (%rdx) # sched: [6:1.00] 10399 ; SANDY-NEXT: rcll $7, %edi # sched: [1:0.50] 10400 ; SANDY-NEXT: rcrl $7, %edi # sched: [1:0.50] 10401 ; SANDY-NEXT: rcll $7, (%rdx) # sched: [6:1.00] 10402 ; SANDY-NEXT: rcrl $7, (%rdx) # sched: [6:1.00] 10403 ; SANDY-NEXT: rcll %cl, %edi # sched: [1:0.50] 10404 ; SANDY-NEXT: rcrl %cl, %edi # sched: [1:0.50] 10405 ; SANDY-NEXT: rcll %cl, (%rdx) # sched: [6:1.00] 10406 ; SANDY-NEXT: rcrl %cl, (%rdx) # sched: [6:1.00] 10407 ; SANDY-NEXT: #NO_APP 10408 ; SANDY-NEXT: retq # sched: [1:1.00] 10409 ; 10410 ; HASWELL-LABEL: test_rcl_rcr_32: 10411 ; HASWELL: # %bb.0: 10412 ; HASWELL-NEXT: #APP 10413 ; HASWELL-NEXT: rcll %edi # sched: [3:0.75] 10414 ; HASWELL-NEXT: rcrl %edi # sched: [3:0.75] 10415 ; HASWELL-NEXT: rcll (%rdx) # sched: [9:0.75] 10416 ; HASWELL-NEXT: rcrl (%rdx) # sched: [9:0.75] 10417 ; HASWELL-NEXT: rcll $7, %edi # sched: [3:0.75] 10418 ; HASWELL-NEXT: rcrl $7, %edi # sched: [3:0.75] 10419 ; HASWELL-NEXT: rcll $7, (%rdx) # sched: [9:0.75] 10420 ; HASWELL-NEXT: rcrl $7, (%rdx) # sched: [9:0.75] 10421 ; HASWELL-NEXT: rcll %cl, %edi # sched: [11:2.00] 10422 ; HASWELL-NEXT: rcrl %cl, %edi # sched: [11:2.00] 10423 ; HASWELL-NEXT: rcll %cl, (%rdx) # sched: [16:2.00] 10424 ; HASWELL-NEXT: rcrl %cl, (%rdx) # sched: [19:2.25] 10425 ; HASWELL-NEXT: #NO_APP 10426 ; HASWELL-NEXT: retq # sched: [7:1.00] 10427 ; 10428 ; BROADWELL-LABEL: test_rcl_rcr_32: 10429 ; BROADWELL: # %bb.0: 10430 ; BROADWELL-NEXT: #APP 10431 ; BROADWELL-NEXT: rcll %edi # sched: [3:0.75] 10432 ; BROADWELL-NEXT: rcrl %edi # sched: [3:0.75] 10433 ; BROADWELL-NEXT: rcll (%rdx) # sched: [8:0.75] 10434 ; BROADWELL-NEXT: rcrl (%rdx) # sched: [8:0.75] 10435 ; BROADWELL-NEXT: rcll $7, %edi # sched: [3:0.75] 10436 ; BROADWELL-NEXT: rcrl $7, %edi # sched: [3:0.75] 10437 ; BROADWELL-NEXT: rcll $7, (%rdx) # sched: [8:0.75] 10438 ; BROADWELL-NEXT: rcrl $7, (%rdx) # sched: [8:0.75] 10439 ; BROADWELL-NEXT: rcll %cl, %edi # sched: [11:2.00] 10440 ; BROADWELL-NEXT: rcrl %cl, %edi # sched: [11:2.00] 10441 ; BROADWELL-NEXT: rcll %cl, (%rdx) # sched: [15:2.00] 10442 ; BROADWELL-NEXT: rcrl %cl, (%rdx) # sched: [18:2.25] 10443 ; BROADWELL-NEXT: #NO_APP 10444 ; BROADWELL-NEXT: retq # sched: [7:1.00] 10445 ; 10446 ; SKYLAKE-LABEL: test_rcl_rcr_32: 10447 ; SKYLAKE: # %bb.0: 10448 ; SKYLAKE-NEXT: #APP 10449 ; SKYLAKE-NEXT: rcll %edi # sched: [3:0.75] 10450 ; SKYLAKE-NEXT: rcrl %edi # sched: [3:0.75] 10451 ; SKYLAKE-NEXT: rcll (%rdx) # sched: [8:0.75] 10452 ; SKYLAKE-NEXT: rcrl (%rdx) # sched: [8:0.75] 10453 ; SKYLAKE-NEXT: rcll $7, %edi # sched: [3:0.75] 10454 ; SKYLAKE-NEXT: rcrl $7, %edi # sched: [3:0.75] 10455 ; SKYLAKE-NEXT: rcll $7, (%rdx) # sched: [8:0.75] 10456 ; SKYLAKE-NEXT: rcrl $7, (%rdx) # sched: [8:0.75] 10457 ; SKYLAKE-NEXT: rcll %cl, %edi # sched: [11:2.00] 10458 ; SKYLAKE-NEXT: rcrl %cl, %edi # sched: [11:2.00] 10459 ; SKYLAKE-NEXT: rcll %cl, (%rdx) # sched: [15:2.50] 10460 ; SKYLAKE-NEXT: rcrl %cl, (%rdx) # sched: [18:2.25] 10461 ; SKYLAKE-NEXT: #NO_APP 10462 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 10463 ; 10464 ; SKX-LABEL: test_rcl_rcr_32: 10465 ; SKX: # %bb.0: 10466 ; SKX-NEXT: #APP 10467 ; SKX-NEXT: rcll %edi # sched: [3:0.75] 10468 ; SKX-NEXT: rcrl %edi # sched: [3:0.75] 10469 ; SKX-NEXT: rcll (%rdx) # sched: [8:0.75] 10470 ; SKX-NEXT: rcrl (%rdx) # sched: [8:0.75] 10471 ; SKX-NEXT: rcll $7, %edi # sched: [3:0.75] 10472 ; SKX-NEXT: rcrl $7, %edi # sched: [3:0.75] 10473 ; SKX-NEXT: rcll $7, (%rdx) # sched: [8:0.75] 10474 ; SKX-NEXT: rcrl $7, (%rdx) # sched: [8:0.75] 10475 ; SKX-NEXT: rcll %cl, %edi # sched: [11:2.00] 10476 ; SKX-NEXT: rcrl %cl, %edi # sched: [11:2.00] 10477 ; SKX-NEXT: rcll %cl, (%rdx) # sched: [15:2.50] 10478 ; SKX-NEXT: rcrl %cl, (%rdx) # sched: [18:2.25] 10479 ; SKX-NEXT: #NO_APP 10480 ; SKX-NEXT: retq # sched: [7:1.00] 10481 ; 10482 ; BTVER2-LABEL: test_rcl_rcr_32: 10483 ; BTVER2: # %bb.0: 10484 ; BTVER2-NEXT: #APP 10485 ; BTVER2-NEXT: rcll %edi # sched: [1:0.50] 10486 ; BTVER2-NEXT: rcrl %edi # sched: [1:0.50] 10487 ; BTVER2-NEXT: rcll (%rdx) # sched: [4:1.00] 10488 ; BTVER2-NEXT: rcrl (%rdx) # sched: [4:1.00] 10489 ; BTVER2-NEXT: rcll $7, %edi # sched: [1:0.50] 10490 ; BTVER2-NEXT: rcrl $7, %edi # sched: [1:0.50] 10491 ; BTVER2-NEXT: rcll $7, (%rdx) # sched: [4:1.00] 10492 ; BTVER2-NEXT: rcrl $7, (%rdx) # sched: [4:1.00] 10493 ; BTVER2-NEXT: rcll %cl, %edi # sched: [1:0.50] 10494 ; BTVER2-NEXT: rcrl %cl, %edi # sched: [1:0.50] 10495 ; BTVER2-NEXT: rcll %cl, (%rdx) # sched: [4:1.00] 10496 ; BTVER2-NEXT: rcrl %cl, (%rdx) # sched: [4:1.00] 10497 ; BTVER2-NEXT: #NO_APP 10498 ; BTVER2-NEXT: retq # sched: [4:1.00] 10499 ; 10500 ; ZNVER1-LABEL: test_rcl_rcr_32: 10501 ; ZNVER1: # %bb.0: 10502 ; ZNVER1-NEXT: #APP 10503 ; ZNVER1-NEXT: rcll %edi # sched: [1:0.25] 10504 ; ZNVER1-NEXT: rcrl %edi # sched: [1:0.25] 10505 ; ZNVER1-NEXT: rcll (%rdx) # sched: [100:0.25] 10506 ; ZNVER1-NEXT: rcrl (%rdx) # sched: [100:0.25] 10507 ; ZNVER1-NEXT: rcll $7, %edi # sched: [1:0.25] 10508 ; ZNVER1-NEXT: rcrl $7, %edi # sched: [1:0.25] 10509 ; ZNVER1-NEXT: rcll $7, (%rdx) # sched: [100:0.25] 10510 ; ZNVER1-NEXT: rcrl $7, (%rdx) # sched: [100:0.25] 10511 ; ZNVER1-NEXT: rcll %cl, %edi # sched: [1:0.25] 10512 ; ZNVER1-NEXT: rcrl %cl, %edi # sched: [1:0.25] 10513 ; ZNVER1-NEXT: rcll %cl, (%rdx) # sched: [100:0.25] 10514 ; ZNVER1-NEXT: rcrl %cl, (%rdx) # sched: [100:0.25] 10515 ; ZNVER1-NEXT: #NO_APP 10516 ; ZNVER1-NEXT: retq # sched: [1:0.50] 10517 call void asm sideeffect "rcll $0 \0A\09 rcrl $0 \0A\09 rcll $2 \0A\09 rcrl $2 \0A\09 rcll $3, $0 \0A\09 rcrl $3, $0 \0A\09 rcll $3, $2 \0A\09 rcrl $3, $2 \0A\09 rcll %CL, $0 \0A\09 rcrl %CL, $0 \0A\09 rcll %CL, $2 \0A\09 rcrl %CL, $2", "r,r,*m,i"(i32 %a0, i32 %a1, i32 *%a2, i8 7) 10518 ret void 10519 } 10520 define void @test_rcl_rcr_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 10521 ; GENERIC-LABEL: test_rcl_rcr_64: 10522 ; GENERIC: # %bb.0: 10523 ; GENERIC-NEXT: #APP 10524 ; GENERIC-NEXT: rclq %rdi # sched: [1:0.50] 10525 ; GENERIC-NEXT: rcrq %rdi # sched: [1:0.50] 10526 ; GENERIC-NEXT: rclq (%rdx) # sched: [6:1.00] 10527 ; GENERIC-NEXT: rcrq (%rdx) # sched: [6:1.00] 10528 ; GENERIC-NEXT: rclq $7, %rdi # sched: [1:0.50] 10529 ; GENERIC-NEXT: rcrq $7, %rdi # sched: [1:0.50] 10530 ; GENERIC-NEXT: rclq $7, (%rdx) # sched: [6:1.00] 10531 ; GENERIC-NEXT: rcrq $7, (%rdx) # sched: [6:1.00] 10532 ; GENERIC-NEXT: rclq %cl, %rdi # sched: [1:0.50] 10533 ; GENERIC-NEXT: rcrq %cl, %rdi # sched: [1:0.50] 10534 ; GENERIC-NEXT: rclq %cl, (%rdx) # sched: [6:1.00] 10535 ; GENERIC-NEXT: rcrq %cl, (%rdx) # sched: [6:1.00] 10536 ; GENERIC-NEXT: #NO_APP 10537 ; GENERIC-NEXT: retq # sched: [1:1.00] 10538 ; 10539 ; ATOM-LABEL: test_rcl_rcr_64: 10540 ; ATOM: # %bb.0: 10541 ; ATOM-NEXT: #APP 10542 ; ATOM-NEXT: rclq %rdi # sched: [1:1.00] 10543 ; ATOM-NEXT: rcrq %rdi # sched: [1:1.00] 10544 ; ATOM-NEXT: rclq (%rdx) # sched: [1:1.00] 10545 ; ATOM-NEXT: rcrq (%rdx) # sched: [1:1.00] 10546 ; ATOM-NEXT: rclq $7, %rdi # sched: [1:1.00] 10547 ; ATOM-NEXT: rcrq $7, %rdi # sched: [1:1.00] 10548 ; ATOM-NEXT: rclq $7, (%rdx) # sched: [1:1.00] 10549 ; ATOM-NEXT: rcrq $7, (%rdx) # sched: [1:1.00] 10550 ; ATOM-NEXT: rclq %cl, %rdi # sched: [1:1.00] 10551 ; ATOM-NEXT: rcrq %cl, %rdi # sched: [1:1.00] 10552 ; ATOM-NEXT: rclq %cl, (%rdx) # sched: [1:1.00] 10553 ; ATOM-NEXT: rcrq %cl, (%rdx) # sched: [1:1.00] 10554 ; ATOM-NEXT: #NO_APP 10555 ; ATOM-NEXT: retq # sched: [79:39.50] 10556 ; 10557 ; SLM-LABEL: test_rcl_rcr_64: 10558 ; SLM: # %bb.0: 10559 ; SLM-NEXT: #APP 10560 ; SLM-NEXT: rclq %rdi # sched: [1:1.00] 10561 ; SLM-NEXT: rcrq %rdi # sched: [1:1.00] 10562 ; SLM-NEXT: rclq (%rdx) # sched: [4:2.00] 10563 ; SLM-NEXT: rcrq (%rdx) # sched: [4:2.00] 10564 ; SLM-NEXT: rclq $7, %rdi # sched: [1:1.00] 10565 ; SLM-NEXT: rcrq $7, %rdi # sched: [1:1.00] 10566 ; SLM-NEXT: rclq $7, (%rdx) # sched: [4:2.00] 10567 ; SLM-NEXT: rcrq $7, (%rdx) # sched: [4:2.00] 10568 ; SLM-NEXT: rclq %cl, %rdi # sched: [1:1.00] 10569 ; SLM-NEXT: rcrq %cl, %rdi # sched: [1:1.00] 10570 ; SLM-NEXT: rclq %cl, (%rdx) # sched: [4:2.00] 10571 ; SLM-NEXT: rcrq %cl, (%rdx) # sched: [4:2.00] 10572 ; SLM-NEXT: #NO_APP 10573 ; SLM-NEXT: retq # sched: [4:1.00] 10574 ; 10575 ; SANDY-LABEL: test_rcl_rcr_64: 10576 ; SANDY: # %bb.0: 10577 ; SANDY-NEXT: #APP 10578 ; SANDY-NEXT: rclq %rdi # sched: [1:0.50] 10579 ; SANDY-NEXT: rcrq %rdi # sched: [1:0.50] 10580 ; SANDY-NEXT: rclq (%rdx) # sched: [6:1.00] 10581 ; SANDY-NEXT: rcrq (%rdx) # sched: [6:1.00] 10582 ; SANDY-NEXT: rclq $7, %rdi # sched: [1:0.50] 10583 ; SANDY-NEXT: rcrq $7, %rdi # sched: [1:0.50] 10584 ; SANDY-NEXT: rclq $7, (%rdx) # sched: [6:1.00] 10585 ; SANDY-NEXT: rcrq $7, (%rdx) # sched: [6:1.00] 10586 ; SANDY-NEXT: rclq %cl, %rdi # sched: [1:0.50] 10587 ; SANDY-NEXT: rcrq %cl, %rdi # sched: [1:0.50] 10588 ; SANDY-NEXT: rclq %cl, (%rdx) # sched: [6:1.00] 10589 ; SANDY-NEXT: rcrq %cl, (%rdx) # sched: [6:1.00] 10590 ; SANDY-NEXT: #NO_APP 10591 ; SANDY-NEXT: retq # sched: [1:1.00] 10592 ; 10593 ; HASWELL-LABEL: test_rcl_rcr_64: 10594 ; HASWELL: # %bb.0: 10595 ; HASWELL-NEXT: #APP 10596 ; HASWELL-NEXT: rclq %rdi # sched: [3:0.75] 10597 ; HASWELL-NEXT: rcrq %rdi # sched: [3:0.75] 10598 ; HASWELL-NEXT: rclq (%rdx) # sched: [9:0.75] 10599 ; HASWELL-NEXT: rcrq (%rdx) # sched: [9:0.75] 10600 ; HASWELL-NEXT: rclq $7, %rdi # sched: [3:0.75] 10601 ; HASWELL-NEXT: rcrq $7, %rdi # sched: [3:0.75] 10602 ; HASWELL-NEXT: rclq $7, (%rdx) # sched: [9:0.75] 10603 ; HASWELL-NEXT: rcrq $7, (%rdx) # sched: [9:0.75] 10604 ; HASWELL-NEXT: rclq %cl, %rdi # sched: [11:2.00] 10605 ; HASWELL-NEXT: rcrq %cl, %rdi # sched: [11:2.00] 10606 ; HASWELL-NEXT: rclq %cl, (%rdx) # sched: [16:2.00] 10607 ; HASWELL-NEXT: rcrq %cl, (%rdx) # sched: [19:2.25] 10608 ; HASWELL-NEXT: #NO_APP 10609 ; HASWELL-NEXT: retq # sched: [7:1.00] 10610 ; 10611 ; BROADWELL-LABEL: test_rcl_rcr_64: 10612 ; BROADWELL: # %bb.0: 10613 ; BROADWELL-NEXT: #APP 10614 ; BROADWELL-NEXT: rclq %rdi # sched: [3:0.75] 10615 ; BROADWELL-NEXT: rcrq %rdi # sched: [3:0.75] 10616 ; BROADWELL-NEXT: rclq (%rdx) # sched: [8:0.75] 10617 ; BROADWELL-NEXT: rcrq (%rdx) # sched: [8:0.75] 10618 ; BROADWELL-NEXT: rclq $7, %rdi # sched: [3:0.75] 10619 ; BROADWELL-NEXT: rcrq $7, %rdi # sched: [3:0.75] 10620 ; BROADWELL-NEXT: rclq $7, (%rdx) # sched: [8:0.75] 10621 ; BROADWELL-NEXT: rcrq $7, (%rdx) # sched: [8:0.75] 10622 ; BROADWELL-NEXT: rclq %cl, %rdi # sched: [11:2.00] 10623 ; BROADWELL-NEXT: rcrq %cl, %rdi # sched: [11:2.00] 10624 ; BROADWELL-NEXT: rclq %cl, (%rdx) # sched: [15:2.00] 10625 ; BROADWELL-NEXT: rcrq %cl, (%rdx) # sched: [18:2.25] 10626 ; BROADWELL-NEXT: #NO_APP 10627 ; BROADWELL-NEXT: retq # sched: [7:1.00] 10628 ; 10629 ; SKYLAKE-LABEL: test_rcl_rcr_64: 10630 ; SKYLAKE: # %bb.0: 10631 ; SKYLAKE-NEXT: #APP 10632 ; SKYLAKE-NEXT: rclq %rdi # sched: [3:0.75] 10633 ; SKYLAKE-NEXT: rcrq %rdi # sched: [3:0.75] 10634 ; SKYLAKE-NEXT: rclq (%rdx) # sched: [8:0.75] 10635 ; SKYLAKE-NEXT: rcrq (%rdx) # sched: [8:0.75] 10636 ; SKYLAKE-NEXT: rclq $7, %rdi # sched: [3:0.75] 10637 ; SKYLAKE-NEXT: rcrq $7, %rdi # sched: [3:0.75] 10638 ; SKYLAKE-NEXT: rclq $7, (%rdx) # sched: [8:0.75] 10639 ; SKYLAKE-NEXT: rcrq $7, (%rdx) # sched: [8:0.75] 10640 ; SKYLAKE-NEXT: rclq %cl, %rdi # sched: [11:2.00] 10641 ; SKYLAKE-NEXT: rcrq %cl, %rdi # sched: [11:2.00] 10642 ; SKYLAKE-NEXT: rclq %cl, (%rdx) # sched: [15:2.50] 10643 ; SKYLAKE-NEXT: rcrq %cl, (%rdx) # sched: [18:2.25] 10644 ; SKYLAKE-NEXT: #NO_APP 10645 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 10646 ; 10647 ; SKX-LABEL: test_rcl_rcr_64: 10648 ; SKX: # %bb.0: 10649 ; SKX-NEXT: #APP 10650 ; SKX-NEXT: rclq %rdi # sched: [3:0.75] 10651 ; SKX-NEXT: rcrq %rdi # sched: [3:0.75] 10652 ; SKX-NEXT: rclq (%rdx) # sched: [8:0.75] 10653 ; SKX-NEXT: rcrq (%rdx) # sched: [8:0.75] 10654 ; SKX-NEXT: rclq $7, %rdi # sched: [3:0.75] 10655 ; SKX-NEXT: rcrq $7, %rdi # sched: [3:0.75] 10656 ; SKX-NEXT: rclq $7, (%rdx) # sched: [8:0.75] 10657 ; SKX-NEXT: rcrq $7, (%rdx) # sched: [8:0.75] 10658 ; SKX-NEXT: rclq %cl, %rdi # sched: [11:2.00] 10659 ; SKX-NEXT: rcrq %cl, %rdi # sched: [11:2.00] 10660 ; SKX-NEXT: rclq %cl, (%rdx) # sched: [15:2.50] 10661 ; SKX-NEXT: rcrq %cl, (%rdx) # sched: [18:2.25] 10662 ; SKX-NEXT: #NO_APP 10663 ; SKX-NEXT: retq # sched: [7:1.00] 10664 ; 10665 ; BTVER2-LABEL: test_rcl_rcr_64: 10666 ; BTVER2: # %bb.0: 10667 ; BTVER2-NEXT: #APP 10668 ; BTVER2-NEXT: rclq %rdi # sched: [1:0.50] 10669 ; BTVER2-NEXT: rcrq %rdi # sched: [1:0.50] 10670 ; BTVER2-NEXT: rclq (%rdx) # sched: [4:1.00] 10671 ; BTVER2-NEXT: rcrq (%rdx) # sched: [4:1.00] 10672 ; BTVER2-NEXT: rclq $7, %rdi # sched: [1:0.50] 10673 ; BTVER2-NEXT: rcrq $7, %rdi # sched: [1:0.50] 10674 ; BTVER2-NEXT: rclq $7, (%rdx) # sched: [4:1.00] 10675 ; BTVER2-NEXT: rcrq $7, (%rdx) # sched: [4:1.00] 10676 ; BTVER2-NEXT: rclq %cl, %rdi # sched: [1:0.50] 10677 ; BTVER2-NEXT: rcrq %cl, %rdi # sched: [1:0.50] 10678 ; BTVER2-NEXT: rclq %cl, (%rdx) # sched: [4:1.00] 10679 ; BTVER2-NEXT: rcrq %cl, (%rdx) # sched: [4:1.00] 10680 ; BTVER2-NEXT: #NO_APP 10681 ; BTVER2-NEXT: retq # sched: [4:1.00] 10682 ; 10683 ; ZNVER1-LABEL: test_rcl_rcr_64: 10684 ; ZNVER1: # %bb.0: 10685 ; ZNVER1-NEXT: #APP 10686 ; ZNVER1-NEXT: rclq %rdi # sched: [1:0.25] 10687 ; ZNVER1-NEXT: rcrq %rdi # sched: [1:0.25] 10688 ; ZNVER1-NEXT: rclq (%rdx) # sched: [100:0.25] 10689 ; ZNVER1-NEXT: rcrq (%rdx) # sched: [100:0.25] 10690 ; ZNVER1-NEXT: rclq $7, %rdi # sched: [1:0.25] 10691 ; ZNVER1-NEXT: rcrq $7, %rdi # sched: [1:0.25] 10692 ; ZNVER1-NEXT: rclq $7, (%rdx) # sched: [100:0.25] 10693 ; ZNVER1-NEXT: rcrq $7, (%rdx) # sched: [100:0.25] 10694 ; ZNVER1-NEXT: rclq %cl, %rdi # sched: [1:0.25] 10695 ; ZNVER1-NEXT: rcrq %cl, %rdi # sched: [1:0.25] 10696 ; ZNVER1-NEXT: rclq %cl, (%rdx) # sched: [100:0.25] 10697 ; ZNVER1-NEXT: rcrq %cl, (%rdx) # sched: [100:0.25] 10698 ; ZNVER1-NEXT: #NO_APP 10699 ; ZNVER1-NEXT: retq # sched: [1:0.50] 10700 call void asm sideeffect "rclq $0 \0A\09 rcrq $0 \0A\09 rclq $2 \0A\09 rcrq $2 \0A\09 rclq $3, $0 \0A\09 rcrq $3, $0 \0A\09 rclq $3, $2 \0A\09 rcrq $3, $2 \0A\09 rclq %CL, $0 \0A\09 rcrq %CL, $0 \0A\09 rclq %CL, $2 \0A\09 rcrq %CL, $2", "r,r,*m,i"(i64 %a0, i64 %a1, i64 *%a2, i8 7) 10701 ret void 10702 } 10703 10704 define void @test_rdmsr_wrmsr() optsize { 10705 ; GENERIC-LABEL: test_rdmsr_wrmsr: 10706 ; GENERIC: # %bb.0: 10707 ; GENERIC-NEXT: #APP 10708 ; GENERIC-NEXT: rdmsr # sched: [100:0.33] 10709 ; GENERIC-NEXT: wrmsr # sched: [100:0.33] 10710 ; GENERIC-NEXT: #NO_APP 10711 ; GENERIC-NEXT: retq # sched: [1:1.00] 10712 ; 10713 ; ATOM-LABEL: test_rdmsr_wrmsr: 10714 ; ATOM: # %bb.0: 10715 ; ATOM-NEXT: #APP 10716 ; ATOM-NEXT: rdmsr # sched: [78:39.00] 10717 ; ATOM-NEXT: wrmsr # sched: [202:101.00] 10718 ; ATOM-NEXT: #NO_APP 10719 ; ATOM-NEXT: retq # sched: [79:39.50] 10720 ; 10721 ; SLM-LABEL: test_rdmsr_wrmsr: 10722 ; SLM: # %bb.0: 10723 ; SLM-NEXT: #APP 10724 ; SLM-NEXT: rdmsr # sched: [100:1.00] 10725 ; SLM-NEXT: wrmsr # sched: [100:1.00] 10726 ; SLM-NEXT: #NO_APP 10727 ; SLM-NEXT: retq # sched: [4:1.00] 10728 ; 10729 ; SANDY-LABEL: test_rdmsr_wrmsr: 10730 ; SANDY: # %bb.0: 10731 ; SANDY-NEXT: #APP 10732 ; SANDY-NEXT: rdmsr # sched: [100:0.33] 10733 ; SANDY-NEXT: wrmsr # sched: [100:0.33] 10734 ; SANDY-NEXT: #NO_APP 10735 ; SANDY-NEXT: retq # sched: [1:1.00] 10736 ; 10737 ; HASWELL-LABEL: test_rdmsr_wrmsr: 10738 ; HASWELL: # %bb.0: 10739 ; HASWELL-NEXT: #APP 10740 ; HASWELL-NEXT: rdmsr # sched: [100:0.25] 10741 ; HASWELL-NEXT: wrmsr # sched: [100:0.25] 10742 ; HASWELL-NEXT: #NO_APP 10743 ; HASWELL-NEXT: retq # sched: [7:1.00] 10744 ; 10745 ; BROADWELL-LABEL: test_rdmsr_wrmsr: 10746 ; BROADWELL: # %bb.0: 10747 ; BROADWELL-NEXT: #APP 10748 ; BROADWELL-NEXT: rdmsr # sched: [100:0.25] 10749 ; BROADWELL-NEXT: wrmsr # sched: [100:0.25] 10750 ; BROADWELL-NEXT: #NO_APP 10751 ; BROADWELL-NEXT: retq # sched: [7:1.00] 10752 ; 10753 ; SKYLAKE-LABEL: test_rdmsr_wrmsr: 10754 ; SKYLAKE: # %bb.0: 10755 ; SKYLAKE-NEXT: #APP 10756 ; SKYLAKE-NEXT: rdmsr # sched: [100:0.25] 10757 ; SKYLAKE-NEXT: wrmsr # sched: [100:0.25] 10758 ; SKYLAKE-NEXT: #NO_APP 10759 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 10760 ; 10761 ; SKX-LABEL: test_rdmsr_wrmsr: 10762 ; SKX: # %bb.0: 10763 ; SKX-NEXT: #APP 10764 ; SKX-NEXT: rdmsr # sched: [100:0.25] 10765 ; SKX-NEXT: wrmsr # sched: [100:0.25] 10766 ; SKX-NEXT: #NO_APP 10767 ; SKX-NEXT: retq # sched: [7:1.00] 10768 ; 10769 ; BTVER2-LABEL: test_rdmsr_wrmsr: 10770 ; BTVER2: # %bb.0: 10771 ; BTVER2-NEXT: #APP 10772 ; BTVER2-NEXT: rdmsr # sched: [100:0.50] 10773 ; BTVER2-NEXT: wrmsr # sched: [100:0.50] 10774 ; BTVER2-NEXT: #NO_APP 10775 ; BTVER2-NEXT: retq # sched: [4:1.00] 10776 ; 10777 ; ZNVER1-LABEL: test_rdmsr_wrmsr: 10778 ; ZNVER1: # %bb.0: 10779 ; ZNVER1-NEXT: #APP 10780 ; ZNVER1-NEXT: rdmsr # sched: [100:0.25] 10781 ; ZNVER1-NEXT: wrmsr # sched: [100:0.25] 10782 ; ZNVER1-NEXT: #NO_APP 10783 ; ZNVER1-NEXT: retq # sched: [1:0.50] 10784 call void asm sideeffect "rdmsr \0A\09 wrmsr", ""() 10785 ret void 10786 } 10787 10788 define void @test_rdpmc() optsize { 10789 ; GENERIC-LABEL: test_rdpmc: 10790 ; GENERIC: # %bb.0: 10791 ; GENERIC-NEXT: #APP 10792 ; GENERIC-NEXT: rdpmc # sched: [100:0.33] 10793 ; GENERIC-NEXT: #NO_APP 10794 ; GENERIC-NEXT: retq # sched: [1:1.00] 10795 ; 10796 ; ATOM-LABEL: test_rdpmc: 10797 ; ATOM: # %bb.0: 10798 ; ATOM-NEXT: #APP 10799 ; ATOM-NEXT: rdpmc # sched: [46:23.00] 10800 ; ATOM-NEXT: #NO_APP 10801 ; ATOM-NEXT: retq # sched: [79:39.50] 10802 ; 10803 ; SLM-LABEL: test_rdpmc: 10804 ; SLM: # %bb.0: 10805 ; SLM-NEXT: #APP 10806 ; SLM-NEXT: rdpmc # sched: [100:1.00] 10807 ; SLM-NEXT: #NO_APP 10808 ; SLM-NEXT: retq # sched: [4:1.00] 10809 ; 10810 ; SANDY-LABEL: test_rdpmc: 10811 ; SANDY: # %bb.0: 10812 ; SANDY-NEXT: #APP 10813 ; SANDY-NEXT: rdpmc # sched: [100:0.33] 10814 ; SANDY-NEXT: #NO_APP 10815 ; SANDY-NEXT: retq # sched: [1:1.00] 10816 ; 10817 ; HASWELL-LABEL: test_rdpmc: 10818 ; HASWELL: # %bb.0: 10819 ; HASWELL-NEXT: #APP 10820 ; HASWELL-NEXT: rdpmc # sched: [1:8.50] 10821 ; HASWELL-NEXT: #NO_APP 10822 ; HASWELL-NEXT: retq # sched: [7:1.00] 10823 ; 10824 ; BROADWELL-LABEL: test_rdpmc: 10825 ; BROADWELL: # %bb.0: 10826 ; BROADWELL-NEXT: #APP 10827 ; BROADWELL-NEXT: rdpmc # sched: [100:0.25] 10828 ; BROADWELL-NEXT: #NO_APP 10829 ; BROADWELL-NEXT: retq # sched: [7:1.00] 10830 ; 10831 ; SKYLAKE-LABEL: test_rdpmc: 10832 ; SKYLAKE: # %bb.0: 10833 ; SKYLAKE-NEXT: #APP 10834 ; SKYLAKE-NEXT: rdpmc # sched: [100:0.25] 10835 ; SKYLAKE-NEXT: #NO_APP 10836 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 10837 ; 10838 ; SKX-LABEL: test_rdpmc: 10839 ; SKX: # %bb.0: 10840 ; SKX-NEXT: #APP 10841 ; SKX-NEXT: rdpmc # sched: [100:0.25] 10842 ; SKX-NEXT: #NO_APP 10843 ; SKX-NEXT: retq # sched: [7:1.00] 10844 ; 10845 ; BTVER2-LABEL: test_rdpmc: 10846 ; BTVER2: # %bb.0: 10847 ; BTVER2-NEXT: #APP 10848 ; BTVER2-NEXT: rdpmc # sched: [100:0.50] 10849 ; BTVER2-NEXT: #NO_APP 10850 ; BTVER2-NEXT: retq # sched: [4:1.00] 10851 ; 10852 ; ZNVER1-LABEL: test_rdpmc: 10853 ; ZNVER1: # %bb.0: 10854 ; ZNVER1-NEXT: #APP 10855 ; ZNVER1-NEXT: rdpmc # sched: [100:0.25] 10856 ; ZNVER1-NEXT: #NO_APP 10857 ; ZNVER1-NEXT: retq # sched: [1:0.50] 10858 call void asm sideeffect "rdpmc", ""() 10859 ret void 10860 } 10861 10862 define void @test_rdtsc_rdtscp() optsize { 10863 ; GENERIC-LABEL: test_rdtsc_rdtscp: 10864 ; GENERIC: # %bb.0: 10865 ; GENERIC-NEXT: #APP 10866 ; GENERIC-NEXT: rdtsc # sched: [100:0.33] 10867 ; GENERIC-NEXT: rdtscp # sched: [100:0.33] 10868 ; GENERIC-NEXT: #NO_APP 10869 ; GENERIC-NEXT: retq # sched: [1:1.00] 10870 ; 10871 ; ATOM-LABEL: test_rdtsc_rdtscp: 10872 ; ATOM: # %bb.0: 10873 ; ATOM-NEXT: #APP 10874 ; ATOM-NEXT: rdtsc # sched: [30:15.00] 10875 ; ATOM-NEXT: rdtscp # sched: [30:15.00] 10876 ; ATOM-NEXT: #NO_APP 10877 ; ATOM-NEXT: retq # sched: [79:39.50] 10878 ; 10879 ; SLM-LABEL: test_rdtsc_rdtscp: 10880 ; SLM: # %bb.0: 10881 ; SLM-NEXT: #APP 10882 ; SLM-NEXT: rdtsc # sched: [100:1.00] 10883 ; SLM-NEXT: rdtscp # sched: [100:1.00] 10884 ; SLM-NEXT: #NO_APP 10885 ; SLM-NEXT: retq # sched: [4:1.00] 10886 ; 10887 ; SANDY-LABEL: test_rdtsc_rdtscp: 10888 ; SANDY: # %bb.0: 10889 ; SANDY-NEXT: #APP 10890 ; SANDY-NEXT: rdtsc # sched: [100:0.33] 10891 ; SANDY-NEXT: rdtscp # sched: [100:0.33] 10892 ; SANDY-NEXT: #NO_APP 10893 ; SANDY-NEXT: retq # sched: [1:1.00] 10894 ; 10895 ; HASWELL-LABEL: test_rdtsc_rdtscp: 10896 ; HASWELL: # %bb.0: 10897 ; HASWELL-NEXT: #APP 10898 ; HASWELL-NEXT: rdtsc # sched: [18:2.00] 10899 ; HASWELL-NEXT: rdtscp # sched: [42:5.50] 10900 ; HASWELL-NEXT: #NO_APP 10901 ; HASWELL-NEXT: retq # sched: [7:1.00] 10902 ; 10903 ; BROADWELL-LABEL: test_rdtsc_rdtscp: 10904 ; BROADWELL: # %bb.0: 10905 ; BROADWELL-NEXT: #APP 10906 ; BROADWELL-NEXT: rdtsc # sched: [18:2.00] 10907 ; BROADWELL-NEXT: rdtscp # sched: [42:5.50] 10908 ; BROADWELL-NEXT: #NO_APP 10909 ; BROADWELL-NEXT: retq # sched: [7:1.00] 10910 ; 10911 ; SKYLAKE-LABEL: test_rdtsc_rdtscp: 10912 ; SKYLAKE: # %bb.0: 10913 ; SKYLAKE-NEXT: #APP 10914 ; SKYLAKE-NEXT: rdtsc # sched: [18:2.00] 10915 ; SKYLAKE-NEXT: rdtscp # sched: [42:5.50] 10916 ; SKYLAKE-NEXT: #NO_APP 10917 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 10918 ; 10919 ; SKX-LABEL: test_rdtsc_rdtscp: 10920 ; SKX: # %bb.0: 10921 ; SKX-NEXT: #APP 10922 ; SKX-NEXT: rdtsc # sched: [18:2.00] 10923 ; SKX-NEXT: rdtscp # sched: [42:5.50] 10924 ; SKX-NEXT: #NO_APP 10925 ; SKX-NEXT: retq # sched: [7:1.00] 10926 ; 10927 ; BTVER2-LABEL: test_rdtsc_rdtscp: 10928 ; BTVER2: # %bb.0: 10929 ; BTVER2-NEXT: #APP 10930 ; BTVER2-NEXT: rdtsc # sched: [100:0.50] 10931 ; BTVER2-NEXT: rdtscp # sched: [100:0.50] 10932 ; BTVER2-NEXT: #NO_APP 10933 ; BTVER2-NEXT: retq # sched: [4:1.00] 10934 ; 10935 ; ZNVER1-LABEL: test_rdtsc_rdtscp: 10936 ; ZNVER1: # %bb.0: 10937 ; ZNVER1-NEXT: #APP 10938 ; ZNVER1-NEXT: rdtsc # sched: [100:0.25] 10939 ; ZNVER1-NEXT: rdtscp # sched: [100:0.25] 10940 ; ZNVER1-NEXT: #NO_APP 10941 ; ZNVER1-NEXT: retq # sched: [1:0.50] 10942 call void asm sideeffect "rdtsc \0A\09 rdtscp", ""() 10943 ret void 10944 } 10945 10946 define void @test_ret() optsize { 10947 ; GENERIC-LABEL: test_ret: 10948 ; GENERIC: # %bb.0: 10949 ; GENERIC-NEXT: #APP 10950 ; GENERIC-NEXT: retq # sched: [1:1.00] 10951 ; GENERIC-NEXT: retq $4095 # imm = 0xFFF 10952 ; GENERIC-NEXT: # sched: [6:1.00] 10953 ; GENERIC-NEXT: lretl # sched: [6:1.00] 10954 ; GENERIC-NEXT: lretl $4095 # imm = 0xFFF 10955 ; GENERIC-NEXT: # sched: [6:1.00] 10956 ; GENERIC-NEXT: #NO_APP 10957 ; GENERIC-NEXT: retq # sched: [1:1.00] 10958 ; 10959 ; ATOM-LABEL: test_ret: 10960 ; ATOM: # %bb.0: 10961 ; ATOM-NEXT: #APP 10962 ; ATOM-NEXT: retq # sched: [79:39.50] 10963 ; ATOM-NEXT: retq $4095 # imm = 0xFFF 10964 ; ATOM-NEXT: # sched: [1:1.00] 10965 ; ATOM-NEXT: lretl # sched: [79:39.50] 10966 ; ATOM-NEXT: lretl $4095 # imm = 0xFFF 10967 ; ATOM-NEXT: # sched: [79:39.50] 10968 ; ATOM-NEXT: #NO_APP 10969 ; ATOM-NEXT: retq # sched: [79:39.50] 10970 ; 10971 ; SLM-LABEL: test_ret: 10972 ; SLM: # %bb.0: 10973 ; SLM-NEXT: #APP 10974 ; SLM-NEXT: retq # sched: [4:1.00] 10975 ; SLM-NEXT: retq $4095 # imm = 0xFFF 10976 ; SLM-NEXT: # sched: [4:1.00] 10977 ; SLM-NEXT: lretl # sched: [4:1.00] 10978 ; SLM-NEXT: lretl $4095 # imm = 0xFFF 10979 ; SLM-NEXT: # sched: [4:1.00] 10980 ; SLM-NEXT: #NO_APP 10981 ; SLM-NEXT: retq # sched: [4:1.00] 10982 ; 10983 ; SANDY-LABEL: test_ret: 10984 ; SANDY: # %bb.0: 10985 ; SANDY-NEXT: #APP 10986 ; SANDY-NEXT: retq # sched: [1:1.00] 10987 ; SANDY-NEXT: retq $4095 # imm = 0xFFF 10988 ; SANDY-NEXT: # sched: [6:1.00] 10989 ; SANDY-NEXT: lretl # sched: [6:1.00] 10990 ; SANDY-NEXT: lretl $4095 # imm = 0xFFF 10991 ; SANDY-NEXT: # sched: [6:1.00] 10992 ; SANDY-NEXT: #NO_APP 10993 ; SANDY-NEXT: retq # sched: [1:1.00] 10994 ; 10995 ; HASWELL-LABEL: test_ret: 10996 ; HASWELL: # %bb.0: 10997 ; HASWELL-NEXT: #APP 10998 ; HASWELL-NEXT: retq # sched: [7:1.00] 10999 ; HASWELL-NEXT: retq $4095 # imm = 0xFFF 11000 ; HASWELL-NEXT: # sched: [1:2.00] 11001 ; HASWELL-NEXT: lretl # sched: [6:0.50] 11002 ; HASWELL-NEXT: lretl $4095 # imm = 0xFFF 11003 ; HASWELL-NEXT: # sched: [1:2.00] 11004 ; HASWELL-NEXT: #NO_APP 11005 ; HASWELL-NEXT: retq # sched: [7:1.00] 11006 ; 11007 ; BROADWELL-LABEL: test_ret: 11008 ; BROADWELL: # %bb.0: 11009 ; BROADWELL-NEXT: #APP 11010 ; BROADWELL-NEXT: retq # sched: [7:1.00] 11011 ; BROADWELL-NEXT: retq $4095 # imm = 0xFFF 11012 ; BROADWELL-NEXT: # sched: [6:0.50] 11013 ; BROADWELL-NEXT: lretl # sched: [6:0.50] 11014 ; BROADWELL-NEXT: lretl $4095 # imm = 0xFFF 11015 ; BROADWELL-NEXT: # sched: [6:0.50] 11016 ; BROADWELL-NEXT: #NO_APP 11017 ; BROADWELL-NEXT: retq # sched: [7:1.00] 11018 ; 11019 ; SKYLAKE-LABEL: test_ret: 11020 ; SKYLAKE: # %bb.0: 11021 ; SKYLAKE-NEXT: #APP 11022 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 11023 ; SKYLAKE-NEXT: retq $4095 # imm = 0xFFF 11024 ; SKYLAKE-NEXT: # sched: [6:0.50] 11025 ; SKYLAKE-NEXT: lretl # sched: [6:0.50] 11026 ; SKYLAKE-NEXT: lretl $4095 # imm = 0xFFF 11027 ; SKYLAKE-NEXT: # sched: [6:0.50] 11028 ; SKYLAKE-NEXT: #NO_APP 11029 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 11030 ; 11031 ; SKX-LABEL: test_ret: 11032 ; SKX: # %bb.0: 11033 ; SKX-NEXT: #APP 11034 ; SKX-NEXT: retq # sched: [7:1.00] 11035 ; SKX-NEXT: retq $4095 # imm = 0xFFF 11036 ; SKX-NEXT: # sched: [6:0.50] 11037 ; SKX-NEXT: lretl # sched: [6:0.50] 11038 ; SKX-NEXT: lretl $4095 # imm = 0xFFF 11039 ; SKX-NEXT: # sched: [6:0.50] 11040 ; SKX-NEXT: #NO_APP 11041 ; SKX-NEXT: retq # sched: [7:1.00] 11042 ; 11043 ; BTVER2-LABEL: test_ret: 11044 ; BTVER2: # %bb.0: 11045 ; BTVER2-NEXT: #APP 11046 ; BTVER2-NEXT: retq # sched: [4:1.00] 11047 ; BTVER2-NEXT: retq $4095 # imm = 0xFFF 11048 ; BTVER2-NEXT: # sched: [4:1.00] 11049 ; BTVER2-NEXT: lretl # sched: [4:1.00] 11050 ; BTVER2-NEXT: lretl $4095 # imm = 0xFFF 11051 ; BTVER2-NEXT: # sched: [4:1.00] 11052 ; BTVER2-NEXT: #NO_APP 11053 ; BTVER2-NEXT: retq # sched: [4:1.00] 11054 ; 11055 ; ZNVER1-LABEL: test_ret: 11056 ; ZNVER1: # %bb.0: 11057 ; ZNVER1-NEXT: #APP 11058 ; ZNVER1-NEXT: retq # sched: [1:0.50] 11059 ; ZNVER1-NEXT: retq $4095 # imm = 0xFFF 11060 ; ZNVER1-NEXT: # sched: [5:0.50] 11061 ; ZNVER1-NEXT: lretl # sched: [1:0.50] 11062 ; ZNVER1-NEXT: lretl $4095 # imm = 0xFFF 11063 ; ZNVER1-NEXT: # sched: [5:0.50] 11064 ; ZNVER1-NEXT: #NO_APP 11065 ; ZNVER1-NEXT: retq # sched: [1:0.50] 11066 call void asm sideeffect "ret \0A\09 ret $0 \0A\09 lret \0A\09 lret $0", "i"(i16 4095) 11067 ret void 11068 } 11069 11070 define void @test_rol_ror_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 11071 ; GENERIC-LABEL: test_rol_ror_8: 11072 ; GENERIC: # %bb.0: 11073 ; GENERIC-NEXT: #APP 11074 ; GENERIC-NEXT: rolb %dil # sched: [2:1.00] 11075 ; GENERIC-NEXT: rorb %dil # sched: [2:1.00] 11076 ; GENERIC-NEXT: rolb (%rdx) # sched: [8:1.00] 11077 ; GENERIC-NEXT: rorb (%rdx) # sched: [8:1.00] 11078 ; GENERIC-NEXT: rolb $7, %dil # sched: [2:1.00] 11079 ; GENERIC-NEXT: rorb $7, %dil # sched: [2:1.00] 11080 ; GENERIC-NEXT: rolb $7, (%rdx) # sched: [8:1.00] 11081 ; GENERIC-NEXT: rorb $7, (%rdx) # sched: [8:1.00] 11082 ; GENERIC-NEXT: rolb %cl, %dil # sched: [3:1.50] 11083 ; GENERIC-NEXT: rorb %cl, %dil # sched: [3:1.50] 11084 ; GENERIC-NEXT: rolb %cl, (%rdx) # sched: [9:1.50] 11085 ; GENERIC-NEXT: rorb %cl, (%rdx) # sched: [9:1.50] 11086 ; GENERIC-NEXT: #NO_APP 11087 ; GENERIC-NEXT: retq # sched: [1:1.00] 11088 ; 11089 ; ATOM-LABEL: test_rol_ror_8: 11090 ; ATOM: # %bb.0: 11091 ; ATOM-NEXT: #APP 11092 ; ATOM-NEXT: rolb %dil # sched: [1:1.00] 11093 ; ATOM-NEXT: rorb %dil # sched: [1:1.00] 11094 ; ATOM-NEXT: rolb (%rdx) # sched: [1:1.00] 11095 ; ATOM-NEXT: rorb (%rdx) # sched: [1:1.00] 11096 ; ATOM-NEXT: rolb $7, %dil # sched: [1:1.00] 11097 ; ATOM-NEXT: rorb $7, %dil # sched: [1:1.00] 11098 ; ATOM-NEXT: rolb $7, (%rdx) # sched: [1:1.00] 11099 ; ATOM-NEXT: rorb $7, (%rdx) # sched: [1:1.00] 11100 ; ATOM-NEXT: rolb %cl, %dil # sched: [1:1.00] 11101 ; ATOM-NEXT: rorb %cl, %dil # sched: [1:1.00] 11102 ; ATOM-NEXT: rolb %cl, (%rdx) # sched: [1:1.00] 11103 ; ATOM-NEXT: rorb %cl, (%rdx) # sched: [1:1.00] 11104 ; ATOM-NEXT: #NO_APP 11105 ; ATOM-NEXT: retq # sched: [79:39.50] 11106 ; 11107 ; SLM-LABEL: test_rol_ror_8: 11108 ; SLM: # %bb.0: 11109 ; SLM-NEXT: #APP 11110 ; SLM-NEXT: rolb %dil # sched: [1:1.00] 11111 ; SLM-NEXT: rorb %dil # sched: [1:1.00] 11112 ; SLM-NEXT: rolb (%rdx) # sched: [4:2.00] 11113 ; SLM-NEXT: rorb (%rdx) # sched: [4:2.00] 11114 ; SLM-NEXT: rolb $7, %dil # sched: [1:1.00] 11115 ; SLM-NEXT: rorb $7, %dil # sched: [1:1.00] 11116 ; SLM-NEXT: rolb $7, (%rdx) # sched: [4:2.00] 11117 ; SLM-NEXT: rorb $7, (%rdx) # sched: [4:2.00] 11118 ; SLM-NEXT: rolb %cl, %dil # sched: [1:1.00] 11119 ; SLM-NEXT: rorb %cl, %dil # sched: [1:1.00] 11120 ; SLM-NEXT: rolb %cl, (%rdx) # sched: [4:2.00] 11121 ; SLM-NEXT: rorb %cl, (%rdx) # sched: [4:2.00] 11122 ; SLM-NEXT: #NO_APP 11123 ; SLM-NEXT: retq # sched: [4:1.00] 11124 ; 11125 ; SANDY-LABEL: test_rol_ror_8: 11126 ; SANDY: # %bb.0: 11127 ; SANDY-NEXT: #APP 11128 ; SANDY-NEXT: rolb %dil # sched: [2:1.00] 11129 ; SANDY-NEXT: rorb %dil # sched: [2:1.00] 11130 ; SANDY-NEXT: rolb (%rdx) # sched: [8:1.00] 11131 ; SANDY-NEXT: rorb (%rdx) # sched: [8:1.00] 11132 ; SANDY-NEXT: rolb $7, %dil # sched: [2:1.00] 11133 ; SANDY-NEXT: rorb $7, %dil # sched: [2:1.00] 11134 ; SANDY-NEXT: rolb $7, (%rdx) # sched: [8:1.00] 11135 ; SANDY-NEXT: rorb $7, (%rdx) # sched: [8:1.00] 11136 ; SANDY-NEXT: rolb %cl, %dil # sched: [3:1.50] 11137 ; SANDY-NEXT: rorb %cl, %dil # sched: [3:1.50] 11138 ; SANDY-NEXT: rolb %cl, (%rdx) # sched: [9:1.50] 11139 ; SANDY-NEXT: rorb %cl, (%rdx) # sched: [9:1.50] 11140 ; SANDY-NEXT: #NO_APP 11141 ; SANDY-NEXT: retq # sched: [1:1.00] 11142 ; 11143 ; HASWELL-LABEL: test_rol_ror_8: 11144 ; HASWELL: # %bb.0: 11145 ; HASWELL-NEXT: #APP 11146 ; HASWELL-NEXT: rolb %dil # sched: [2:1.00] 11147 ; HASWELL-NEXT: rorb %dil # sched: [2:1.00] 11148 ; HASWELL-NEXT: rolb (%rdx) # sched: [8:1.00] 11149 ; HASWELL-NEXT: rorb (%rdx) # sched: [8:1.00] 11150 ; HASWELL-NEXT: rolb $7, %dil # sched: [2:1.00] 11151 ; HASWELL-NEXT: rorb $7, %dil # sched: [2:1.00] 11152 ; HASWELL-NEXT: rolb $7, (%rdx) # sched: [8:1.00] 11153 ; HASWELL-NEXT: rorb $7, (%rdx) # sched: [8:1.00] 11154 ; HASWELL-NEXT: rolb %cl, %dil # sched: [3:1.00] 11155 ; HASWELL-NEXT: rorb %cl, %dil # sched: [3:1.00] 11156 ; HASWELL-NEXT: rolb %cl, (%rdx) # sched: [9:1.00] 11157 ; HASWELL-NEXT: rorb %cl, (%rdx) # sched: [9:1.00] 11158 ; HASWELL-NEXT: #NO_APP 11159 ; HASWELL-NEXT: retq # sched: [7:1.00] 11160 ; 11161 ; BROADWELL-LABEL: test_rol_ror_8: 11162 ; BROADWELL: # %bb.0: 11163 ; BROADWELL-NEXT: #APP 11164 ; BROADWELL-NEXT: rolb %dil # sched: [2:1.00] 11165 ; BROADWELL-NEXT: rorb %dil # sched: [2:1.00] 11166 ; BROADWELL-NEXT: rolb (%rdx) # sched: [7:1.00] 11167 ; BROADWELL-NEXT: rorb (%rdx) # sched: [7:1.00] 11168 ; BROADWELL-NEXT: rolb $7, %dil # sched: [2:1.00] 11169 ; BROADWELL-NEXT: rorb $7, %dil # sched: [2:1.00] 11170 ; BROADWELL-NEXT: rolb $7, (%rdx) # sched: [7:1.00] 11171 ; BROADWELL-NEXT: rorb $7, (%rdx) # sched: [7:1.00] 11172 ; BROADWELL-NEXT: rolb %cl, %dil # sched: [3:1.00] 11173 ; BROADWELL-NEXT: rorb %cl, %dil # sched: [3:1.00] 11174 ; BROADWELL-NEXT: rolb %cl, (%rdx) # sched: [8:1.00] 11175 ; BROADWELL-NEXT: rorb %cl, (%rdx) # sched: [8:1.00] 11176 ; BROADWELL-NEXT: #NO_APP 11177 ; BROADWELL-NEXT: retq # sched: [7:1.00] 11178 ; 11179 ; SKYLAKE-LABEL: test_rol_ror_8: 11180 ; SKYLAKE: # %bb.0: 11181 ; SKYLAKE-NEXT: #APP 11182 ; SKYLAKE-NEXT: rolb %dil # sched: [2:1.00] 11183 ; SKYLAKE-NEXT: rorb %dil # sched: [2:1.00] 11184 ; SKYLAKE-NEXT: rolb (%rdx) # sched: [7:1.00] 11185 ; SKYLAKE-NEXT: rorb (%rdx) # sched: [7:1.00] 11186 ; SKYLAKE-NEXT: rolb $7, %dil # sched: [2:1.00] 11187 ; SKYLAKE-NEXT: rorb $7, %dil # sched: [2:1.00] 11188 ; SKYLAKE-NEXT: rolb $7, (%rdx) # sched: [7:1.00] 11189 ; SKYLAKE-NEXT: rorb $7, (%rdx) # sched: [7:1.00] 11190 ; SKYLAKE-NEXT: rolb %cl, %dil # sched: [3:1.50] 11191 ; SKYLAKE-NEXT: rorb %cl, %dil # sched: [3:1.50] 11192 ; SKYLAKE-NEXT: rolb %cl, (%rdx) # sched: [8:1.50] 11193 ; SKYLAKE-NEXT: rorb %cl, (%rdx) # sched: [8:1.50] 11194 ; SKYLAKE-NEXT: #NO_APP 11195 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 11196 ; 11197 ; SKX-LABEL: test_rol_ror_8: 11198 ; SKX: # %bb.0: 11199 ; SKX-NEXT: #APP 11200 ; SKX-NEXT: rolb %dil # sched: [2:1.00] 11201 ; SKX-NEXT: rorb %dil # sched: [2:1.00] 11202 ; SKX-NEXT: rolb (%rdx) # sched: [7:1.00] 11203 ; SKX-NEXT: rorb (%rdx) # sched: [7:1.00] 11204 ; SKX-NEXT: rolb $7, %dil # sched: [2:1.00] 11205 ; SKX-NEXT: rorb $7, %dil # sched: [2:1.00] 11206 ; SKX-NEXT: rolb $7, (%rdx) # sched: [7:1.00] 11207 ; SKX-NEXT: rorb $7, (%rdx) # sched: [7:1.00] 11208 ; SKX-NEXT: rolb %cl, %dil # sched: [3:1.50] 11209 ; SKX-NEXT: rorb %cl, %dil # sched: [3:1.50] 11210 ; SKX-NEXT: rolb %cl, (%rdx) # sched: [8:1.50] 11211 ; SKX-NEXT: rorb %cl, (%rdx) # sched: [8:1.50] 11212 ; SKX-NEXT: #NO_APP 11213 ; SKX-NEXT: retq # sched: [7:1.00] 11214 ; 11215 ; BTVER2-LABEL: test_rol_ror_8: 11216 ; BTVER2: # %bb.0: 11217 ; BTVER2-NEXT: #APP 11218 ; BTVER2-NEXT: rolb %dil # sched: [1:0.50] 11219 ; BTVER2-NEXT: rorb %dil # sched: [1:0.50] 11220 ; BTVER2-NEXT: rolb (%rdx) # sched: [4:1.00] 11221 ; BTVER2-NEXT: rorb (%rdx) # sched: [4:1.00] 11222 ; BTVER2-NEXT: rolb $7, %dil # sched: [1:0.50] 11223 ; BTVER2-NEXT: rorb $7, %dil # sched: [1:0.50] 11224 ; BTVER2-NEXT: rolb $7, (%rdx) # sched: [4:1.00] 11225 ; BTVER2-NEXT: rorb $7, (%rdx) # sched: [4:1.00] 11226 ; BTVER2-NEXT: rolb %cl, %dil # sched: [1:0.50] 11227 ; BTVER2-NEXT: rorb %cl, %dil # sched: [1:0.50] 11228 ; BTVER2-NEXT: rolb %cl, (%rdx) # sched: [4:1.00] 11229 ; BTVER2-NEXT: rorb %cl, (%rdx) # sched: [4:1.00] 11230 ; BTVER2-NEXT: #NO_APP 11231 ; BTVER2-NEXT: retq # sched: [4:1.00] 11232 ; 11233 ; ZNVER1-LABEL: test_rol_ror_8: 11234 ; ZNVER1: # %bb.0: 11235 ; ZNVER1-NEXT: #APP 11236 ; ZNVER1-NEXT: rolb %dil # sched: [1:0.25] 11237 ; ZNVER1-NEXT: rorb %dil # sched: [1:0.25] 11238 ; ZNVER1-NEXT: rolb (%rdx) # sched: [5:1.00] 11239 ; ZNVER1-NEXT: rorb (%rdx) # sched: [5:1.00] 11240 ; ZNVER1-NEXT: rolb $7, %dil # sched: [1:0.25] 11241 ; ZNVER1-NEXT: rorb $7, %dil # sched: [1:0.25] 11242 ; ZNVER1-NEXT: rolb $7, (%rdx) # sched: [5:1.00] 11243 ; ZNVER1-NEXT: rorb $7, (%rdx) # sched: [5:1.00] 11244 ; ZNVER1-NEXT: rolb %cl, %dil # sched: [1:0.25] 11245 ; ZNVER1-NEXT: rorb %cl, %dil # sched: [1:0.25] 11246 ; ZNVER1-NEXT: rolb %cl, (%rdx) # sched: [5:1.00] 11247 ; ZNVER1-NEXT: rorb %cl, (%rdx) # sched: [5:1.00] 11248 ; ZNVER1-NEXT: #NO_APP 11249 ; ZNVER1-NEXT: retq # sched: [1:0.50] 11250 call void asm sideeffect "rolb $0 \0A\09 rorb $0 \0A\09 rolb $2 \0A\09 rorb $2 \0A\09 rolb $3, $0 \0A\09 rorb $3, $0 \0A\09 rolb $3, $2 \0A\09 rorb $3, $2 \0A\09 rolb %CL, $0 \0A\09 rorb %CL, $0 \0A\09 rolb %CL, $2 \0A\09 rorb %CL, $2", "r,r,*m,i"(i8 %a0, i8 %a1, i8 *%a2, i8 7) 11251 ret void 11252 } 11253 define void @test_rol_ror_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 11254 ; GENERIC-LABEL: test_rol_ror_16: 11255 ; GENERIC: # %bb.0: 11256 ; GENERIC-NEXT: #APP 11257 ; GENERIC-NEXT: rolw %di # sched: [2:1.00] 11258 ; GENERIC-NEXT: rorw %di # sched: [2:1.00] 11259 ; GENERIC-NEXT: rolw (%rdx) # sched: [8:1.00] 11260 ; GENERIC-NEXT: rorw (%rdx) # sched: [8:1.00] 11261 ; GENERIC-NEXT: rolw $7, %di # sched: [2:1.00] 11262 ; GENERIC-NEXT: rorw $7, %di # sched: [2:1.00] 11263 ; GENERIC-NEXT: rolw $7, (%rdx) # sched: [8:1.00] 11264 ; GENERIC-NEXT: rorw $7, (%rdx) # sched: [8:1.00] 11265 ; GENERIC-NEXT: rolw %cl, %di # sched: [3:1.50] 11266 ; GENERIC-NEXT: rorw %cl, %di # sched: [3:1.50] 11267 ; GENERIC-NEXT: rolw %cl, (%rdx) # sched: [9:1.50] 11268 ; GENERIC-NEXT: rorw %cl, (%rdx) # sched: [9:1.50] 11269 ; GENERIC-NEXT: #NO_APP 11270 ; GENERIC-NEXT: retq # sched: [1:1.00] 11271 ; 11272 ; ATOM-LABEL: test_rol_ror_16: 11273 ; ATOM: # %bb.0: 11274 ; ATOM-NEXT: #APP 11275 ; ATOM-NEXT: rolw %di # sched: [1:1.00] 11276 ; ATOM-NEXT: rorw %di # sched: [1:1.00] 11277 ; ATOM-NEXT: rolw (%rdx) # sched: [1:1.00] 11278 ; ATOM-NEXT: rorw (%rdx) # sched: [1:1.00] 11279 ; ATOM-NEXT: rolw $7, %di # sched: [1:1.00] 11280 ; ATOM-NEXT: rorw $7, %di # sched: [1:1.00] 11281 ; ATOM-NEXT: rolw $7, (%rdx) # sched: [1:1.00] 11282 ; ATOM-NEXT: rorw $7, (%rdx) # sched: [1:1.00] 11283 ; ATOM-NEXT: rolw %cl, %di # sched: [1:1.00] 11284 ; ATOM-NEXT: rorw %cl, %di # sched: [1:1.00] 11285 ; ATOM-NEXT: rolw %cl, (%rdx) # sched: [1:1.00] 11286 ; ATOM-NEXT: rorw %cl, (%rdx) # sched: [1:1.00] 11287 ; ATOM-NEXT: #NO_APP 11288 ; ATOM-NEXT: retq # sched: [79:39.50] 11289 ; 11290 ; SLM-LABEL: test_rol_ror_16: 11291 ; SLM: # %bb.0: 11292 ; SLM-NEXT: #APP 11293 ; SLM-NEXT: rolw %di # sched: [1:1.00] 11294 ; SLM-NEXT: rorw %di # sched: [1:1.00] 11295 ; SLM-NEXT: rolw (%rdx) # sched: [4:2.00] 11296 ; SLM-NEXT: rorw (%rdx) # sched: [4:2.00] 11297 ; SLM-NEXT: rolw $7, %di # sched: [1:1.00] 11298 ; SLM-NEXT: rorw $7, %di # sched: [1:1.00] 11299 ; SLM-NEXT: rolw $7, (%rdx) # sched: [4:2.00] 11300 ; SLM-NEXT: rorw $7, (%rdx) # sched: [4:2.00] 11301 ; SLM-NEXT: rolw %cl, %di # sched: [1:1.00] 11302 ; SLM-NEXT: rorw %cl, %di # sched: [1:1.00] 11303 ; SLM-NEXT: rolw %cl, (%rdx) # sched: [4:2.00] 11304 ; SLM-NEXT: rorw %cl, (%rdx) # sched: [4:2.00] 11305 ; SLM-NEXT: #NO_APP 11306 ; SLM-NEXT: retq # sched: [4:1.00] 11307 ; 11308 ; SANDY-LABEL: test_rol_ror_16: 11309 ; SANDY: # %bb.0: 11310 ; SANDY-NEXT: #APP 11311 ; SANDY-NEXT: rolw %di # sched: [2:1.00] 11312 ; SANDY-NEXT: rorw %di # sched: [2:1.00] 11313 ; SANDY-NEXT: rolw (%rdx) # sched: [8:1.00] 11314 ; SANDY-NEXT: rorw (%rdx) # sched: [8:1.00] 11315 ; SANDY-NEXT: rolw $7, %di # sched: [2:1.00] 11316 ; SANDY-NEXT: rorw $7, %di # sched: [2:1.00] 11317 ; SANDY-NEXT: rolw $7, (%rdx) # sched: [8:1.00] 11318 ; SANDY-NEXT: rorw $7, (%rdx) # sched: [8:1.00] 11319 ; SANDY-NEXT: rolw %cl, %di # sched: [3:1.50] 11320 ; SANDY-NEXT: rorw %cl, %di # sched: [3:1.50] 11321 ; SANDY-NEXT: rolw %cl, (%rdx) # sched: [9:1.50] 11322 ; SANDY-NEXT: rorw %cl, (%rdx) # sched: [9:1.50] 11323 ; SANDY-NEXT: #NO_APP 11324 ; SANDY-NEXT: retq # sched: [1:1.00] 11325 ; 11326 ; HASWELL-LABEL: test_rol_ror_16: 11327 ; HASWELL: # %bb.0: 11328 ; HASWELL-NEXT: #APP 11329 ; HASWELL-NEXT: rolw %di # sched: [2:1.00] 11330 ; HASWELL-NEXT: rorw %di # sched: [2:1.00] 11331 ; HASWELL-NEXT: rolw (%rdx) # sched: [8:1.00] 11332 ; HASWELL-NEXT: rorw (%rdx) # sched: [8:1.00] 11333 ; HASWELL-NEXT: rolw $7, %di # sched: [2:1.00] 11334 ; HASWELL-NEXT: rorw $7, %di # sched: [2:1.00] 11335 ; HASWELL-NEXT: rolw $7, (%rdx) # sched: [8:1.00] 11336 ; HASWELL-NEXT: rorw $7, (%rdx) # sched: [8:1.00] 11337 ; HASWELL-NEXT: rolw %cl, %di # sched: [3:1.00] 11338 ; HASWELL-NEXT: rorw %cl, %di # sched: [3:1.00] 11339 ; HASWELL-NEXT: rolw %cl, (%rdx) # sched: [9:1.00] 11340 ; HASWELL-NEXT: rorw %cl, (%rdx) # sched: [9:1.00] 11341 ; HASWELL-NEXT: #NO_APP 11342 ; HASWELL-NEXT: retq # sched: [7:1.00] 11343 ; 11344 ; BROADWELL-LABEL: test_rol_ror_16: 11345 ; BROADWELL: # %bb.0: 11346 ; BROADWELL-NEXT: #APP 11347 ; BROADWELL-NEXT: rolw %di # sched: [2:1.00] 11348 ; BROADWELL-NEXT: rorw %di # sched: [2:1.00] 11349 ; BROADWELL-NEXT: rolw (%rdx) # sched: [7:1.00] 11350 ; BROADWELL-NEXT: rorw (%rdx) # sched: [7:1.00] 11351 ; BROADWELL-NEXT: rolw $7, %di # sched: [2:1.00] 11352 ; BROADWELL-NEXT: rorw $7, %di # sched: [2:1.00] 11353 ; BROADWELL-NEXT: rolw $7, (%rdx) # sched: [7:1.00] 11354 ; BROADWELL-NEXT: rorw $7, (%rdx) # sched: [7:1.00] 11355 ; BROADWELL-NEXT: rolw %cl, %di # sched: [3:1.00] 11356 ; BROADWELL-NEXT: rorw %cl, %di # sched: [3:1.00] 11357 ; BROADWELL-NEXT: rolw %cl, (%rdx) # sched: [8:1.00] 11358 ; BROADWELL-NEXT: rorw %cl, (%rdx) # sched: [8:1.00] 11359 ; BROADWELL-NEXT: #NO_APP 11360 ; BROADWELL-NEXT: retq # sched: [7:1.00] 11361 ; 11362 ; SKYLAKE-LABEL: test_rol_ror_16: 11363 ; SKYLAKE: # %bb.0: 11364 ; SKYLAKE-NEXT: #APP 11365 ; SKYLAKE-NEXT: rolw %di # sched: [2:1.00] 11366 ; SKYLAKE-NEXT: rorw %di # sched: [2:1.00] 11367 ; SKYLAKE-NEXT: rolw (%rdx) # sched: [7:1.00] 11368 ; SKYLAKE-NEXT: rorw (%rdx) # sched: [7:1.00] 11369 ; SKYLAKE-NEXT: rolw $7, %di # sched: [2:1.00] 11370 ; SKYLAKE-NEXT: rorw $7, %di # sched: [2:1.00] 11371 ; SKYLAKE-NEXT: rolw $7, (%rdx) # sched: [7:1.00] 11372 ; SKYLAKE-NEXT: rorw $7, (%rdx) # sched: [7:1.00] 11373 ; SKYLAKE-NEXT: rolw %cl, %di # sched: [3:1.50] 11374 ; SKYLAKE-NEXT: rorw %cl, %di # sched: [3:1.50] 11375 ; SKYLAKE-NEXT: rolw %cl, (%rdx) # sched: [8:1.50] 11376 ; SKYLAKE-NEXT: rorw %cl, (%rdx) # sched: [8:1.50] 11377 ; SKYLAKE-NEXT: #NO_APP 11378 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 11379 ; 11380 ; SKX-LABEL: test_rol_ror_16: 11381 ; SKX: # %bb.0: 11382 ; SKX-NEXT: #APP 11383 ; SKX-NEXT: rolw %di # sched: [2:1.00] 11384 ; SKX-NEXT: rorw %di # sched: [2:1.00] 11385 ; SKX-NEXT: rolw (%rdx) # sched: [7:1.00] 11386 ; SKX-NEXT: rorw (%rdx) # sched: [7:1.00] 11387 ; SKX-NEXT: rolw $7, %di # sched: [2:1.00] 11388 ; SKX-NEXT: rorw $7, %di # sched: [2:1.00] 11389 ; SKX-NEXT: rolw $7, (%rdx) # sched: [7:1.00] 11390 ; SKX-NEXT: rorw $7, (%rdx) # sched: [7:1.00] 11391 ; SKX-NEXT: rolw %cl, %di # sched: [3:1.50] 11392 ; SKX-NEXT: rorw %cl, %di # sched: [3:1.50] 11393 ; SKX-NEXT: rolw %cl, (%rdx) # sched: [8:1.50] 11394 ; SKX-NEXT: rorw %cl, (%rdx) # sched: [8:1.50] 11395 ; SKX-NEXT: #NO_APP 11396 ; SKX-NEXT: retq # sched: [7:1.00] 11397 ; 11398 ; BTVER2-LABEL: test_rol_ror_16: 11399 ; BTVER2: # %bb.0: 11400 ; BTVER2-NEXT: #APP 11401 ; BTVER2-NEXT: rolw %di # sched: [1:0.50] 11402 ; BTVER2-NEXT: rorw %di # sched: [1:0.50] 11403 ; BTVER2-NEXT: rolw (%rdx) # sched: [4:1.00] 11404 ; BTVER2-NEXT: rorw (%rdx) # sched: [4:1.00] 11405 ; BTVER2-NEXT: rolw $7, %di # sched: [1:0.50] 11406 ; BTVER2-NEXT: rorw $7, %di # sched: [1:0.50] 11407 ; BTVER2-NEXT: rolw $7, (%rdx) # sched: [4:1.00] 11408 ; BTVER2-NEXT: rorw $7, (%rdx) # sched: [4:1.00] 11409 ; BTVER2-NEXT: rolw %cl, %di # sched: [1:0.50] 11410 ; BTVER2-NEXT: rorw %cl, %di # sched: [1:0.50] 11411 ; BTVER2-NEXT: rolw %cl, (%rdx) # sched: [4:1.00] 11412 ; BTVER2-NEXT: rorw %cl, (%rdx) # sched: [4:1.00] 11413 ; BTVER2-NEXT: #NO_APP 11414 ; BTVER2-NEXT: retq # sched: [4:1.00] 11415 ; 11416 ; ZNVER1-LABEL: test_rol_ror_16: 11417 ; ZNVER1: # %bb.0: 11418 ; ZNVER1-NEXT: #APP 11419 ; ZNVER1-NEXT: rolw %di # sched: [1:0.25] 11420 ; ZNVER1-NEXT: rorw %di # sched: [1:0.25] 11421 ; ZNVER1-NEXT: rolw (%rdx) # sched: [5:1.00] 11422 ; ZNVER1-NEXT: rorw (%rdx) # sched: [5:1.00] 11423 ; ZNVER1-NEXT: rolw $7, %di # sched: [1:0.25] 11424 ; ZNVER1-NEXT: rorw $7, %di # sched: [1:0.25] 11425 ; ZNVER1-NEXT: rolw $7, (%rdx) # sched: [5:1.00] 11426 ; ZNVER1-NEXT: rorw $7, (%rdx) # sched: [5:1.00] 11427 ; ZNVER1-NEXT: rolw %cl, %di # sched: [1:0.25] 11428 ; ZNVER1-NEXT: rorw %cl, %di # sched: [1:0.25] 11429 ; ZNVER1-NEXT: rolw %cl, (%rdx) # sched: [5:1.00] 11430 ; ZNVER1-NEXT: rorw %cl, (%rdx) # sched: [5:1.00] 11431 ; ZNVER1-NEXT: #NO_APP 11432 ; ZNVER1-NEXT: retq # sched: [1:0.50] 11433 call void asm sideeffect "rolw $0 \0A\09 rorw $0 \0A\09 rolw $2 \0A\09 rorw $2 \0A\09 rolw $3, $0 \0A\09 rorw $3, $0 \0A\09 rolw $3, $2 \0A\09 rorw $3, $2 \0A\09 rolw %CL, $0 \0A\09 rorw %CL, $0 \0A\09 rolw %CL, $2 \0A\09 rorw %CL, $2", "r,r,*m,i"(i16 %a0, i16 %a1, i16 *%a2, i8 7) 11434 ret void 11435 } 11436 define void @test_rol_ror_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 11437 ; GENERIC-LABEL: test_rol_ror_32: 11438 ; GENERIC: # %bb.0: 11439 ; GENERIC-NEXT: #APP 11440 ; GENERIC-NEXT: roll %edi # sched: [2:1.00] 11441 ; GENERIC-NEXT: rorl %edi # sched: [2:1.00] 11442 ; GENERIC-NEXT: roll (%rdx) # sched: [8:1.00] 11443 ; GENERIC-NEXT: rorl (%rdx) # sched: [8:1.00] 11444 ; GENERIC-NEXT: roll $7, %edi # sched: [2:1.00] 11445 ; GENERIC-NEXT: rorl $7, %edi # sched: [2:1.00] 11446 ; GENERIC-NEXT: roll $7, (%rdx) # sched: [8:1.00] 11447 ; GENERIC-NEXT: rorl $7, (%rdx) # sched: [8:1.00] 11448 ; GENERIC-NEXT: roll %cl, %edi # sched: [3:1.50] 11449 ; GENERIC-NEXT: rorl %cl, %edi # sched: [3:1.50] 11450 ; GENERIC-NEXT: roll %cl, (%rdx) # sched: [9:1.50] 11451 ; GENERIC-NEXT: rorl %cl, (%rdx) # sched: [9:1.50] 11452 ; GENERIC-NEXT: #NO_APP 11453 ; GENERIC-NEXT: retq # sched: [1:1.00] 11454 ; 11455 ; ATOM-LABEL: test_rol_ror_32: 11456 ; ATOM: # %bb.0: 11457 ; ATOM-NEXT: #APP 11458 ; ATOM-NEXT: roll %edi # sched: [1:1.00] 11459 ; ATOM-NEXT: rorl %edi # sched: [1:1.00] 11460 ; ATOM-NEXT: roll (%rdx) # sched: [1:1.00] 11461 ; ATOM-NEXT: rorl (%rdx) # sched: [1:1.00] 11462 ; ATOM-NEXT: roll $7, %edi # sched: [1:1.00] 11463 ; ATOM-NEXT: rorl $7, %edi # sched: [1:1.00] 11464 ; ATOM-NEXT: roll $7, (%rdx) # sched: [1:1.00] 11465 ; ATOM-NEXT: rorl $7, (%rdx) # sched: [1:1.00] 11466 ; ATOM-NEXT: roll %cl, %edi # sched: [1:1.00] 11467 ; ATOM-NEXT: rorl %cl, %edi # sched: [1:1.00] 11468 ; ATOM-NEXT: roll %cl, (%rdx) # sched: [1:1.00] 11469 ; ATOM-NEXT: rorl %cl, (%rdx) # sched: [1:1.00] 11470 ; ATOM-NEXT: #NO_APP 11471 ; ATOM-NEXT: retq # sched: [79:39.50] 11472 ; 11473 ; SLM-LABEL: test_rol_ror_32: 11474 ; SLM: # %bb.0: 11475 ; SLM-NEXT: #APP 11476 ; SLM-NEXT: roll %edi # sched: [1:1.00] 11477 ; SLM-NEXT: rorl %edi # sched: [1:1.00] 11478 ; SLM-NEXT: roll (%rdx) # sched: [4:2.00] 11479 ; SLM-NEXT: rorl (%rdx) # sched: [4:2.00] 11480 ; SLM-NEXT: roll $7, %edi # sched: [1:1.00] 11481 ; SLM-NEXT: rorl $7, %edi # sched: [1:1.00] 11482 ; SLM-NEXT: roll $7, (%rdx) # sched: [4:2.00] 11483 ; SLM-NEXT: rorl $7, (%rdx) # sched: [4:2.00] 11484 ; SLM-NEXT: roll %cl, %edi # sched: [1:1.00] 11485 ; SLM-NEXT: rorl %cl, %edi # sched: [1:1.00] 11486 ; SLM-NEXT: roll %cl, (%rdx) # sched: [4:2.00] 11487 ; SLM-NEXT: rorl %cl, (%rdx) # sched: [4:2.00] 11488 ; SLM-NEXT: #NO_APP 11489 ; SLM-NEXT: retq # sched: [4:1.00] 11490 ; 11491 ; SANDY-LABEL: test_rol_ror_32: 11492 ; SANDY: # %bb.0: 11493 ; SANDY-NEXT: #APP 11494 ; SANDY-NEXT: roll %edi # sched: [2:1.00] 11495 ; SANDY-NEXT: rorl %edi # sched: [2:1.00] 11496 ; SANDY-NEXT: roll (%rdx) # sched: [8:1.00] 11497 ; SANDY-NEXT: rorl (%rdx) # sched: [8:1.00] 11498 ; SANDY-NEXT: roll $7, %edi # sched: [2:1.00] 11499 ; SANDY-NEXT: rorl $7, %edi # sched: [2:1.00] 11500 ; SANDY-NEXT: roll $7, (%rdx) # sched: [8:1.00] 11501 ; SANDY-NEXT: rorl $7, (%rdx) # sched: [8:1.00] 11502 ; SANDY-NEXT: roll %cl, %edi # sched: [3:1.50] 11503 ; SANDY-NEXT: rorl %cl, %edi # sched: [3:1.50] 11504 ; SANDY-NEXT: roll %cl, (%rdx) # sched: [9:1.50] 11505 ; SANDY-NEXT: rorl %cl, (%rdx) # sched: [9:1.50] 11506 ; SANDY-NEXT: #NO_APP 11507 ; SANDY-NEXT: retq # sched: [1:1.00] 11508 ; 11509 ; HASWELL-LABEL: test_rol_ror_32: 11510 ; HASWELL: # %bb.0: 11511 ; HASWELL-NEXT: #APP 11512 ; HASWELL-NEXT: roll %edi # sched: [2:1.00] 11513 ; HASWELL-NEXT: rorl %edi # sched: [2:1.00] 11514 ; HASWELL-NEXT: roll (%rdx) # sched: [8:1.00] 11515 ; HASWELL-NEXT: rorl (%rdx) # sched: [8:1.00] 11516 ; HASWELL-NEXT: roll $7, %edi # sched: [2:1.00] 11517 ; HASWELL-NEXT: rorl $7, %edi # sched: [2:1.00] 11518 ; HASWELL-NEXT: roll $7, (%rdx) # sched: [8:1.00] 11519 ; HASWELL-NEXT: rorl $7, (%rdx) # sched: [8:1.00] 11520 ; HASWELL-NEXT: roll %cl, %edi # sched: [3:1.00] 11521 ; HASWELL-NEXT: rorl %cl, %edi # sched: [3:1.00] 11522 ; HASWELL-NEXT: roll %cl, (%rdx) # sched: [9:1.00] 11523 ; HASWELL-NEXT: rorl %cl, (%rdx) # sched: [9:1.00] 11524 ; HASWELL-NEXT: #NO_APP 11525 ; HASWELL-NEXT: retq # sched: [7:1.00] 11526 ; 11527 ; BROADWELL-LABEL: test_rol_ror_32: 11528 ; BROADWELL: # %bb.0: 11529 ; BROADWELL-NEXT: #APP 11530 ; BROADWELL-NEXT: roll %edi # sched: [2:1.00] 11531 ; BROADWELL-NEXT: rorl %edi # sched: [2:1.00] 11532 ; BROADWELL-NEXT: roll (%rdx) # sched: [7:1.00] 11533 ; BROADWELL-NEXT: rorl (%rdx) # sched: [7:1.00] 11534 ; BROADWELL-NEXT: roll $7, %edi # sched: [2:1.00] 11535 ; BROADWELL-NEXT: rorl $7, %edi # sched: [2:1.00] 11536 ; BROADWELL-NEXT: roll $7, (%rdx) # sched: [7:1.00] 11537 ; BROADWELL-NEXT: rorl $7, (%rdx) # sched: [7:1.00] 11538 ; BROADWELL-NEXT: roll %cl, %edi # sched: [3:1.00] 11539 ; BROADWELL-NEXT: rorl %cl, %edi # sched: [3:1.00] 11540 ; BROADWELL-NEXT: roll %cl, (%rdx) # sched: [8:1.00] 11541 ; BROADWELL-NEXT: rorl %cl, (%rdx) # sched: [8:1.00] 11542 ; BROADWELL-NEXT: #NO_APP 11543 ; BROADWELL-NEXT: retq # sched: [7:1.00] 11544 ; 11545 ; SKYLAKE-LABEL: test_rol_ror_32: 11546 ; SKYLAKE: # %bb.0: 11547 ; SKYLAKE-NEXT: #APP 11548 ; SKYLAKE-NEXT: roll %edi # sched: [2:1.00] 11549 ; SKYLAKE-NEXT: rorl %edi # sched: [2:1.00] 11550 ; SKYLAKE-NEXT: roll (%rdx) # sched: [7:1.00] 11551 ; SKYLAKE-NEXT: rorl (%rdx) # sched: [7:1.00] 11552 ; SKYLAKE-NEXT: roll $7, %edi # sched: [2:1.00] 11553 ; SKYLAKE-NEXT: rorl $7, %edi # sched: [2:1.00] 11554 ; SKYLAKE-NEXT: roll $7, (%rdx) # sched: [7:1.00] 11555 ; SKYLAKE-NEXT: rorl $7, (%rdx) # sched: [7:1.00] 11556 ; SKYLAKE-NEXT: roll %cl, %edi # sched: [3:1.50] 11557 ; SKYLAKE-NEXT: rorl %cl, %edi # sched: [3:1.50] 11558 ; SKYLAKE-NEXT: roll %cl, (%rdx) # sched: [8:1.50] 11559 ; SKYLAKE-NEXT: rorl %cl, (%rdx) # sched: [8:1.50] 11560 ; SKYLAKE-NEXT: #NO_APP 11561 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 11562 ; 11563 ; SKX-LABEL: test_rol_ror_32: 11564 ; SKX: # %bb.0: 11565 ; SKX-NEXT: #APP 11566 ; SKX-NEXT: roll %edi # sched: [2:1.00] 11567 ; SKX-NEXT: rorl %edi # sched: [2:1.00] 11568 ; SKX-NEXT: roll (%rdx) # sched: [7:1.00] 11569 ; SKX-NEXT: rorl (%rdx) # sched: [7:1.00] 11570 ; SKX-NEXT: roll $7, %edi # sched: [2:1.00] 11571 ; SKX-NEXT: rorl $7, %edi # sched: [2:1.00] 11572 ; SKX-NEXT: roll $7, (%rdx) # sched: [7:1.00] 11573 ; SKX-NEXT: rorl $7, (%rdx) # sched: [7:1.00] 11574 ; SKX-NEXT: roll %cl, %edi # sched: [3:1.50] 11575 ; SKX-NEXT: rorl %cl, %edi # sched: [3:1.50] 11576 ; SKX-NEXT: roll %cl, (%rdx) # sched: [8:1.50] 11577 ; SKX-NEXT: rorl %cl, (%rdx) # sched: [8:1.50] 11578 ; SKX-NEXT: #NO_APP 11579 ; SKX-NEXT: retq # sched: [7:1.00] 11580 ; 11581 ; BTVER2-LABEL: test_rol_ror_32: 11582 ; BTVER2: # %bb.0: 11583 ; BTVER2-NEXT: #APP 11584 ; BTVER2-NEXT: roll %edi # sched: [1:0.50] 11585 ; BTVER2-NEXT: rorl %edi # sched: [1:0.50] 11586 ; BTVER2-NEXT: roll (%rdx) # sched: [4:1.00] 11587 ; BTVER2-NEXT: rorl (%rdx) # sched: [4:1.00] 11588 ; BTVER2-NEXT: roll $7, %edi # sched: [1:0.50] 11589 ; BTVER2-NEXT: rorl $7, %edi # sched: [1:0.50] 11590 ; BTVER2-NEXT: roll $7, (%rdx) # sched: [4:1.00] 11591 ; BTVER2-NEXT: rorl $7, (%rdx) # sched: [4:1.00] 11592 ; BTVER2-NEXT: roll %cl, %edi # sched: [1:0.50] 11593 ; BTVER2-NEXT: rorl %cl, %edi # sched: [1:0.50] 11594 ; BTVER2-NEXT: roll %cl, (%rdx) # sched: [4:1.00] 11595 ; BTVER2-NEXT: rorl %cl, (%rdx) # sched: [4:1.00] 11596 ; BTVER2-NEXT: #NO_APP 11597 ; BTVER2-NEXT: retq # sched: [4:1.00] 11598 ; 11599 ; ZNVER1-LABEL: test_rol_ror_32: 11600 ; ZNVER1: # %bb.0: 11601 ; ZNVER1-NEXT: #APP 11602 ; ZNVER1-NEXT: roll %edi # sched: [1:0.25] 11603 ; ZNVER1-NEXT: rorl %edi # sched: [1:0.25] 11604 ; ZNVER1-NEXT: roll (%rdx) # sched: [5:1.00] 11605 ; ZNVER1-NEXT: rorl (%rdx) # sched: [5:1.00] 11606 ; ZNVER1-NEXT: roll $7, %edi # sched: [1:0.25] 11607 ; ZNVER1-NEXT: rorl $7, %edi # sched: [1:0.25] 11608 ; ZNVER1-NEXT: roll $7, (%rdx) # sched: [5:1.00] 11609 ; ZNVER1-NEXT: rorl $7, (%rdx) # sched: [5:1.00] 11610 ; ZNVER1-NEXT: roll %cl, %edi # sched: [1:0.25] 11611 ; ZNVER1-NEXT: rorl %cl, %edi # sched: [1:0.25] 11612 ; ZNVER1-NEXT: roll %cl, (%rdx) # sched: [5:1.00] 11613 ; ZNVER1-NEXT: rorl %cl, (%rdx) # sched: [5:1.00] 11614 ; ZNVER1-NEXT: #NO_APP 11615 ; ZNVER1-NEXT: retq # sched: [1:0.50] 11616 call void asm sideeffect "roll $0 \0A\09 rorl $0 \0A\09 roll $2 \0A\09 rorl $2 \0A\09 roll $3, $0 \0A\09 rorl $3, $0 \0A\09 roll $3, $2 \0A\09 rorl $3, $2 \0A\09 roll %CL, $0 \0A\09 rorl %CL, $0 \0A\09 roll %CL, $2 \0A\09 rorl %CL, $2", "r,r,*m,i"(i32 %a0, i32 %a1, i32 *%a2, i8 7) 11617 ret void 11618 } 11619 define void @test_rol_ror_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 11620 ; GENERIC-LABEL: test_rol_ror_64: 11621 ; GENERIC: # %bb.0: 11622 ; GENERIC-NEXT: #APP 11623 ; GENERIC-NEXT: rolq %rdi # sched: [2:1.00] 11624 ; GENERIC-NEXT: rorq %rdi # sched: [2:1.00] 11625 ; GENERIC-NEXT: rolq (%rdx) # sched: [8:1.00] 11626 ; GENERIC-NEXT: rorq (%rdx) # sched: [8:1.00] 11627 ; GENERIC-NEXT: rolq $7, %rdi # sched: [2:1.00] 11628 ; GENERIC-NEXT: rorq $7, %rdi # sched: [2:1.00] 11629 ; GENERIC-NEXT: rolq $7, (%rdx) # sched: [8:1.00] 11630 ; GENERIC-NEXT: rorq $7, (%rdx) # sched: [8:1.00] 11631 ; GENERIC-NEXT: rolq %cl, %rdi # sched: [3:1.50] 11632 ; GENERIC-NEXT: rorq %cl, %rdi # sched: [3:1.50] 11633 ; GENERIC-NEXT: rolq %cl, (%rdx) # sched: [9:1.50] 11634 ; GENERIC-NEXT: rorq %cl, (%rdx) # sched: [9:1.50] 11635 ; GENERIC-NEXT: #NO_APP 11636 ; GENERIC-NEXT: retq # sched: [1:1.00] 11637 ; 11638 ; ATOM-LABEL: test_rol_ror_64: 11639 ; ATOM: # %bb.0: 11640 ; ATOM-NEXT: #APP 11641 ; ATOM-NEXT: rolq %rdi # sched: [1:1.00] 11642 ; ATOM-NEXT: rorq %rdi # sched: [1:1.00] 11643 ; ATOM-NEXT: rolq (%rdx) # sched: [1:1.00] 11644 ; ATOM-NEXT: rorq (%rdx) # sched: [1:1.00] 11645 ; ATOM-NEXT: rolq $7, %rdi # sched: [1:1.00] 11646 ; ATOM-NEXT: rorq $7, %rdi # sched: [1:1.00] 11647 ; ATOM-NEXT: rolq $7, (%rdx) # sched: [1:1.00] 11648 ; ATOM-NEXT: rorq $7, (%rdx) # sched: [1:1.00] 11649 ; ATOM-NEXT: rolq %cl, %rdi # sched: [1:1.00] 11650 ; ATOM-NEXT: rorq %cl, %rdi # sched: [1:1.00] 11651 ; ATOM-NEXT: rolq %cl, (%rdx) # sched: [1:1.00] 11652 ; ATOM-NEXT: rorq %cl, (%rdx) # sched: [1:1.00] 11653 ; ATOM-NEXT: #NO_APP 11654 ; ATOM-NEXT: retq # sched: [79:39.50] 11655 ; 11656 ; SLM-LABEL: test_rol_ror_64: 11657 ; SLM: # %bb.0: 11658 ; SLM-NEXT: #APP 11659 ; SLM-NEXT: rolq %rdi # sched: [1:1.00] 11660 ; SLM-NEXT: rorq %rdi # sched: [1:1.00] 11661 ; SLM-NEXT: rolq (%rdx) # sched: [4:2.00] 11662 ; SLM-NEXT: rorq (%rdx) # sched: [4:2.00] 11663 ; SLM-NEXT: rolq $7, %rdi # sched: [1:1.00] 11664 ; SLM-NEXT: rorq $7, %rdi # sched: [1:1.00] 11665 ; SLM-NEXT: rolq $7, (%rdx) # sched: [4:2.00] 11666 ; SLM-NEXT: rorq $7, (%rdx) # sched: [4:2.00] 11667 ; SLM-NEXT: rolq %cl, %rdi # sched: [1:1.00] 11668 ; SLM-NEXT: rorq %cl, %rdi # sched: [1:1.00] 11669 ; SLM-NEXT: rolq %cl, (%rdx) # sched: [4:2.00] 11670 ; SLM-NEXT: rorq %cl, (%rdx) # sched: [4:2.00] 11671 ; SLM-NEXT: #NO_APP 11672 ; SLM-NEXT: retq # sched: [4:1.00] 11673 ; 11674 ; SANDY-LABEL: test_rol_ror_64: 11675 ; SANDY: # %bb.0: 11676 ; SANDY-NEXT: #APP 11677 ; SANDY-NEXT: rolq %rdi # sched: [2:1.00] 11678 ; SANDY-NEXT: rorq %rdi # sched: [2:1.00] 11679 ; SANDY-NEXT: rolq (%rdx) # sched: [8:1.00] 11680 ; SANDY-NEXT: rorq (%rdx) # sched: [8:1.00] 11681 ; SANDY-NEXT: rolq $7, %rdi # sched: [2:1.00] 11682 ; SANDY-NEXT: rorq $7, %rdi # sched: [2:1.00] 11683 ; SANDY-NEXT: rolq $7, (%rdx) # sched: [8:1.00] 11684 ; SANDY-NEXT: rorq $7, (%rdx) # sched: [8:1.00] 11685 ; SANDY-NEXT: rolq %cl, %rdi # sched: [3:1.50] 11686 ; SANDY-NEXT: rorq %cl, %rdi # sched: [3:1.50] 11687 ; SANDY-NEXT: rolq %cl, (%rdx) # sched: [9:1.50] 11688 ; SANDY-NEXT: rorq %cl, (%rdx) # sched: [9:1.50] 11689 ; SANDY-NEXT: #NO_APP 11690 ; SANDY-NEXT: retq # sched: [1:1.00] 11691 ; 11692 ; HASWELL-LABEL: test_rol_ror_64: 11693 ; HASWELL: # %bb.0: 11694 ; HASWELL-NEXT: #APP 11695 ; HASWELL-NEXT: rolq %rdi # sched: [2:1.00] 11696 ; HASWELL-NEXT: rorq %rdi # sched: [2:1.00] 11697 ; HASWELL-NEXT: rolq (%rdx) # sched: [8:1.00] 11698 ; HASWELL-NEXT: rorq (%rdx) # sched: [8:1.00] 11699 ; HASWELL-NEXT: rolq $7, %rdi # sched: [2:1.00] 11700 ; HASWELL-NEXT: rorq $7, %rdi # sched: [2:1.00] 11701 ; HASWELL-NEXT: rolq $7, (%rdx) # sched: [8:1.00] 11702 ; HASWELL-NEXT: rorq $7, (%rdx) # sched: [8:1.00] 11703 ; HASWELL-NEXT: rolq %cl, %rdi # sched: [3:1.00] 11704 ; HASWELL-NEXT: rorq %cl, %rdi # sched: [3:1.00] 11705 ; HASWELL-NEXT: rolq %cl, (%rdx) # sched: [9:1.00] 11706 ; HASWELL-NEXT: rorq %cl, (%rdx) # sched: [9:1.00] 11707 ; HASWELL-NEXT: #NO_APP 11708 ; HASWELL-NEXT: retq # sched: [7:1.00] 11709 ; 11710 ; BROADWELL-LABEL: test_rol_ror_64: 11711 ; BROADWELL: # %bb.0: 11712 ; BROADWELL-NEXT: #APP 11713 ; BROADWELL-NEXT: rolq %rdi # sched: [2:1.00] 11714 ; BROADWELL-NEXT: rorq %rdi # sched: [2:1.00] 11715 ; BROADWELL-NEXT: rolq (%rdx) # sched: [7:1.00] 11716 ; BROADWELL-NEXT: rorq (%rdx) # sched: [7:1.00] 11717 ; BROADWELL-NEXT: rolq $7, %rdi # sched: [2:1.00] 11718 ; BROADWELL-NEXT: rorq $7, %rdi # sched: [2:1.00] 11719 ; BROADWELL-NEXT: rolq $7, (%rdx) # sched: [7:1.00] 11720 ; BROADWELL-NEXT: rorq $7, (%rdx) # sched: [7:1.00] 11721 ; BROADWELL-NEXT: rolq %cl, %rdi # sched: [3:1.00] 11722 ; BROADWELL-NEXT: rorq %cl, %rdi # sched: [3:1.00] 11723 ; BROADWELL-NEXT: rolq %cl, (%rdx) # sched: [8:1.00] 11724 ; BROADWELL-NEXT: rorq %cl, (%rdx) # sched: [8:1.00] 11725 ; BROADWELL-NEXT: #NO_APP 11726 ; BROADWELL-NEXT: retq # sched: [7:1.00] 11727 ; 11728 ; SKYLAKE-LABEL: test_rol_ror_64: 11729 ; SKYLAKE: # %bb.0: 11730 ; SKYLAKE-NEXT: #APP 11731 ; SKYLAKE-NEXT: rolq %rdi # sched: [2:1.00] 11732 ; SKYLAKE-NEXT: rorq %rdi # sched: [2:1.00] 11733 ; SKYLAKE-NEXT: rolq (%rdx) # sched: [7:1.00] 11734 ; SKYLAKE-NEXT: rorq (%rdx) # sched: [7:1.00] 11735 ; SKYLAKE-NEXT: rolq $7, %rdi # sched: [2:1.00] 11736 ; SKYLAKE-NEXT: rorq $7, %rdi # sched: [2:1.00] 11737 ; SKYLAKE-NEXT: rolq $7, (%rdx) # sched: [7:1.00] 11738 ; SKYLAKE-NEXT: rorq $7, (%rdx) # sched: [7:1.00] 11739 ; SKYLAKE-NEXT: rolq %cl, %rdi # sched: [3:1.50] 11740 ; SKYLAKE-NEXT: rorq %cl, %rdi # sched: [3:1.50] 11741 ; SKYLAKE-NEXT: rolq %cl, (%rdx) # sched: [8:1.50] 11742 ; SKYLAKE-NEXT: rorq %cl, (%rdx) # sched: [8:1.50] 11743 ; SKYLAKE-NEXT: #NO_APP 11744 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 11745 ; 11746 ; SKX-LABEL: test_rol_ror_64: 11747 ; SKX: # %bb.0: 11748 ; SKX-NEXT: #APP 11749 ; SKX-NEXT: rolq %rdi # sched: [2:1.00] 11750 ; SKX-NEXT: rorq %rdi # sched: [2:1.00] 11751 ; SKX-NEXT: rolq (%rdx) # sched: [7:1.00] 11752 ; SKX-NEXT: rorq (%rdx) # sched: [7:1.00] 11753 ; SKX-NEXT: rolq $7, %rdi # sched: [2:1.00] 11754 ; SKX-NEXT: rorq $7, %rdi # sched: [2:1.00] 11755 ; SKX-NEXT: rolq $7, (%rdx) # sched: [7:1.00] 11756 ; SKX-NEXT: rorq $7, (%rdx) # sched: [7:1.00] 11757 ; SKX-NEXT: rolq %cl, %rdi # sched: [3:1.50] 11758 ; SKX-NEXT: rorq %cl, %rdi # sched: [3:1.50] 11759 ; SKX-NEXT: rolq %cl, (%rdx) # sched: [8:1.50] 11760 ; SKX-NEXT: rorq %cl, (%rdx) # sched: [8:1.50] 11761 ; SKX-NEXT: #NO_APP 11762 ; SKX-NEXT: retq # sched: [7:1.00] 11763 ; 11764 ; BTVER2-LABEL: test_rol_ror_64: 11765 ; BTVER2: # %bb.0: 11766 ; BTVER2-NEXT: #APP 11767 ; BTVER2-NEXT: rolq %rdi # sched: [1:0.50] 11768 ; BTVER2-NEXT: rorq %rdi # sched: [1:0.50] 11769 ; BTVER2-NEXT: rolq (%rdx) # sched: [4:1.00] 11770 ; BTVER2-NEXT: rorq (%rdx) # sched: [4:1.00] 11771 ; BTVER2-NEXT: rolq $7, %rdi # sched: [1:0.50] 11772 ; BTVER2-NEXT: rorq $7, %rdi # sched: [1:0.50] 11773 ; BTVER2-NEXT: rolq $7, (%rdx) # sched: [4:1.00] 11774 ; BTVER2-NEXT: rorq $7, (%rdx) # sched: [4:1.00] 11775 ; BTVER2-NEXT: rolq %cl, %rdi # sched: [1:0.50] 11776 ; BTVER2-NEXT: rorq %cl, %rdi # sched: [1:0.50] 11777 ; BTVER2-NEXT: rolq %cl, (%rdx) # sched: [4:1.00] 11778 ; BTVER2-NEXT: rorq %cl, (%rdx) # sched: [4:1.00] 11779 ; BTVER2-NEXT: #NO_APP 11780 ; BTVER2-NEXT: retq # sched: [4:1.00] 11781 ; 11782 ; ZNVER1-LABEL: test_rol_ror_64: 11783 ; ZNVER1: # %bb.0: 11784 ; ZNVER1-NEXT: #APP 11785 ; ZNVER1-NEXT: rolq %rdi # sched: [1:0.25] 11786 ; ZNVER1-NEXT: rorq %rdi # sched: [1:0.25] 11787 ; ZNVER1-NEXT: rolq (%rdx) # sched: [5:1.00] 11788 ; ZNVER1-NEXT: rorq (%rdx) # sched: [5:1.00] 11789 ; ZNVER1-NEXT: rolq $7, %rdi # sched: [1:0.25] 11790 ; ZNVER1-NEXT: rorq $7, %rdi # sched: [1:0.25] 11791 ; ZNVER1-NEXT: rolq $7, (%rdx) # sched: [5:1.00] 11792 ; ZNVER1-NEXT: rorq $7, (%rdx) # sched: [5:1.00] 11793 ; ZNVER1-NEXT: rolq %cl, %rdi # sched: [1:0.25] 11794 ; ZNVER1-NEXT: rorq %cl, %rdi # sched: [1:0.25] 11795 ; ZNVER1-NEXT: rolq %cl, (%rdx) # sched: [5:1.00] 11796 ; ZNVER1-NEXT: rorq %cl, (%rdx) # sched: [5:1.00] 11797 ; ZNVER1-NEXT: #NO_APP 11798 ; ZNVER1-NEXT: retq # sched: [1:0.50] 11799 call void asm sideeffect "rolq $0 \0A\09 rorq $0 \0A\09 rolq $2 \0A\09 rorq $2 \0A\09 rolq $3, $0 \0A\09 rorq $3, $0 \0A\09 rolq $3, $2 \0A\09 rorq $3, $2 \0A\09 rolq %CL, $0 \0A\09 rorq %CL, $0 \0A\09 rolq %CL, $2 \0A\09 rorq %CL, $2", "r,r,*m,i"(i64 %a0, i64 %a1, i64 *%a2, i8 7) 11800 ret void 11801 } 11802 11803 define void @test_sar_shl_shr_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 11804 ; GENERIC-LABEL: test_sar_shl_shr_8: 11805 ; GENERIC: # %bb.0: 11806 ; GENERIC-NEXT: #APP 11807 ; GENERIC-NEXT: sarb %dil # sched: [1:0.50] 11808 ; GENERIC-NEXT: shlb %dil # sched: [1:0.50] 11809 ; GENERIC-NEXT: shrb %dil # sched: [1:0.50] 11810 ; GENERIC-NEXT: sarb (%rdx) # sched: [7:1.00] 11811 ; GENERIC-NEXT: shlb (%rdx) # sched: [7:1.00] 11812 ; GENERIC-NEXT: shrb (%rdx) # sched: [7:1.00] 11813 ; GENERIC-NEXT: sarb $7, %dil # sched: [1:0.50] 11814 ; GENERIC-NEXT: shlb $7, %dil # sched: [1:0.50] 11815 ; GENERIC-NEXT: shrb $7, %dil # sched: [1:0.50] 11816 ; GENERIC-NEXT: sarb $7, (%rdx) # sched: [7:1.00] 11817 ; GENERIC-NEXT: shlb $7, (%rdx) # sched: [7:1.00] 11818 ; GENERIC-NEXT: shrb $7, (%rdx) # sched: [7:1.00] 11819 ; GENERIC-NEXT: sarb %cl, %dil # sched: [3:1.50] 11820 ; GENERIC-NEXT: shlb %cl, %dil # sched: [3:1.50] 11821 ; GENERIC-NEXT: shrb %cl, %dil # sched: [3:1.50] 11822 ; GENERIC-NEXT: sarb %cl, (%rdx) # sched: [9:1.50] 11823 ; GENERIC-NEXT: shlb %cl, (%rdx) # sched: [9:1.50] 11824 ; GENERIC-NEXT: shrb %cl, (%rdx) # sched: [9:1.50] 11825 ; GENERIC-NEXT: #NO_APP 11826 ; GENERIC-NEXT: retq # sched: [1:1.00] 11827 ; 11828 ; ATOM-LABEL: test_sar_shl_shr_8: 11829 ; ATOM: # %bb.0: 11830 ; ATOM-NEXT: #APP 11831 ; ATOM-NEXT: sarb %dil # sched: [1:1.00] 11832 ; ATOM-NEXT: shlb %dil # sched: [1:1.00] 11833 ; ATOM-NEXT: shrb %dil # sched: [1:1.00] 11834 ; ATOM-NEXT: sarb (%rdx) # sched: [1:1.00] 11835 ; ATOM-NEXT: shlb (%rdx) # sched: [1:1.00] 11836 ; ATOM-NEXT: shrb (%rdx) # sched: [1:1.00] 11837 ; ATOM-NEXT: sarb $7, %dil # sched: [1:1.00] 11838 ; ATOM-NEXT: shlb $7, %dil # sched: [1:1.00] 11839 ; ATOM-NEXT: shrb $7, %dil # sched: [1:1.00] 11840 ; ATOM-NEXT: sarb $7, (%rdx) # sched: [1:1.00] 11841 ; ATOM-NEXT: shlb $7, (%rdx) # sched: [1:1.00] 11842 ; ATOM-NEXT: shrb $7, (%rdx) # sched: [1:1.00] 11843 ; ATOM-NEXT: sarb %cl, %dil # sched: [1:1.00] 11844 ; ATOM-NEXT: shlb %cl, %dil # sched: [1:1.00] 11845 ; ATOM-NEXT: shrb %cl, %dil # sched: [1:1.00] 11846 ; ATOM-NEXT: sarb %cl, (%rdx) # sched: [1:1.00] 11847 ; ATOM-NEXT: shlb %cl, (%rdx) # sched: [1:1.00] 11848 ; ATOM-NEXT: shrb %cl, (%rdx) # sched: [1:1.00] 11849 ; ATOM-NEXT: #NO_APP 11850 ; ATOM-NEXT: retq # sched: [79:39.50] 11851 ; 11852 ; SLM-LABEL: test_sar_shl_shr_8: 11853 ; SLM: # %bb.0: 11854 ; SLM-NEXT: #APP 11855 ; SLM-NEXT: sarb %dil # sched: [1:1.00] 11856 ; SLM-NEXT: shlb %dil # sched: [1:1.00] 11857 ; SLM-NEXT: shrb %dil # sched: [1:1.00] 11858 ; SLM-NEXT: sarb (%rdx) # sched: [4:2.00] 11859 ; SLM-NEXT: shlb (%rdx) # sched: [4:2.00] 11860 ; SLM-NEXT: shrb (%rdx) # sched: [4:2.00] 11861 ; SLM-NEXT: sarb $7, %dil # sched: [1:1.00] 11862 ; SLM-NEXT: shlb $7, %dil # sched: [1:1.00] 11863 ; SLM-NEXT: shrb $7, %dil # sched: [1:1.00] 11864 ; SLM-NEXT: sarb $7, (%rdx) # sched: [4:2.00] 11865 ; SLM-NEXT: shlb $7, (%rdx) # sched: [4:2.00] 11866 ; SLM-NEXT: shrb $7, (%rdx) # sched: [4:2.00] 11867 ; SLM-NEXT: sarb %cl, %dil # sched: [1:1.00] 11868 ; SLM-NEXT: shlb %cl, %dil # sched: [1:1.00] 11869 ; SLM-NEXT: shrb %cl, %dil # sched: [1:1.00] 11870 ; SLM-NEXT: sarb %cl, (%rdx) # sched: [4:2.00] 11871 ; SLM-NEXT: shlb %cl, (%rdx) # sched: [4:2.00] 11872 ; SLM-NEXT: shrb %cl, (%rdx) # sched: [4:2.00] 11873 ; SLM-NEXT: #NO_APP 11874 ; SLM-NEXT: retq # sched: [4:1.00] 11875 ; 11876 ; SANDY-LABEL: test_sar_shl_shr_8: 11877 ; SANDY: # %bb.0: 11878 ; SANDY-NEXT: #APP 11879 ; SANDY-NEXT: sarb %dil # sched: [1:0.50] 11880 ; SANDY-NEXT: shlb %dil # sched: [1:0.50] 11881 ; SANDY-NEXT: shrb %dil # sched: [1:0.50] 11882 ; SANDY-NEXT: sarb (%rdx) # sched: [7:1.00] 11883 ; SANDY-NEXT: shlb (%rdx) # sched: [7:1.00] 11884 ; SANDY-NEXT: shrb (%rdx) # sched: [7:1.00] 11885 ; SANDY-NEXT: sarb $7, %dil # sched: [1:0.50] 11886 ; SANDY-NEXT: shlb $7, %dil # sched: [1:0.50] 11887 ; SANDY-NEXT: shrb $7, %dil # sched: [1:0.50] 11888 ; SANDY-NEXT: sarb $7, (%rdx) # sched: [7:1.00] 11889 ; SANDY-NEXT: shlb $7, (%rdx) # sched: [7:1.00] 11890 ; SANDY-NEXT: shrb $7, (%rdx) # sched: [7:1.00] 11891 ; SANDY-NEXT: sarb %cl, %dil # sched: [3:1.50] 11892 ; SANDY-NEXT: shlb %cl, %dil # sched: [3:1.50] 11893 ; SANDY-NEXT: shrb %cl, %dil # sched: [3:1.50] 11894 ; SANDY-NEXT: sarb %cl, (%rdx) # sched: [9:1.50] 11895 ; SANDY-NEXT: shlb %cl, (%rdx) # sched: [9:1.50] 11896 ; SANDY-NEXT: shrb %cl, (%rdx) # sched: [9:1.50] 11897 ; SANDY-NEXT: #NO_APP 11898 ; SANDY-NEXT: retq # sched: [1:1.00] 11899 ; 11900 ; HASWELL-LABEL: test_sar_shl_shr_8: 11901 ; HASWELL: # %bb.0: 11902 ; HASWELL-NEXT: #APP 11903 ; HASWELL-NEXT: sarb %dil # sched: [1:0.50] 11904 ; HASWELL-NEXT: shlb %dil # sched: [1:0.50] 11905 ; HASWELL-NEXT: shrb %dil # sched: [1:0.50] 11906 ; HASWELL-NEXT: sarb (%rdx) # sched: [7:1.00] 11907 ; HASWELL-NEXT: shlb (%rdx) # sched: [7:1.00] 11908 ; HASWELL-NEXT: shrb (%rdx) # sched: [7:1.00] 11909 ; HASWELL-NEXT: sarb $7, %dil # sched: [1:0.50] 11910 ; HASWELL-NEXT: shlb $7, %dil # sched: [1:0.50] 11911 ; HASWELL-NEXT: shrb $7, %dil # sched: [1:0.50] 11912 ; HASWELL-NEXT: sarb $7, (%rdx) # sched: [7:1.00] 11913 ; HASWELL-NEXT: shlb $7, (%rdx) # sched: [7:1.00] 11914 ; HASWELL-NEXT: shrb $7, (%rdx) # sched: [7:1.00] 11915 ; HASWELL-NEXT: sarb %cl, %dil # sched: [3:1.00] 11916 ; HASWELL-NEXT: shlb %cl, %dil # sched: [3:1.00] 11917 ; HASWELL-NEXT: shrb %cl, %dil # sched: [3:1.00] 11918 ; HASWELL-NEXT: sarb %cl, (%rdx) # sched: [9:1.00] 11919 ; HASWELL-NEXT: shlb %cl, (%rdx) # sched: [9:1.00] 11920 ; HASWELL-NEXT: shrb %cl, (%rdx) # sched: [9:1.00] 11921 ; HASWELL-NEXT: #NO_APP 11922 ; HASWELL-NEXT: retq # sched: [7:1.00] 11923 ; 11924 ; BROADWELL-LABEL: test_sar_shl_shr_8: 11925 ; BROADWELL: # %bb.0: 11926 ; BROADWELL-NEXT: #APP 11927 ; BROADWELL-NEXT: sarb %dil # sched: [1:0.50] 11928 ; BROADWELL-NEXT: shlb %dil # sched: [1:0.50] 11929 ; BROADWELL-NEXT: shrb %dil # sched: [1:0.50] 11930 ; BROADWELL-NEXT: sarb (%rdx) # sched: [6:1.00] 11931 ; BROADWELL-NEXT: shlb (%rdx) # sched: [6:1.00] 11932 ; BROADWELL-NEXT: shrb (%rdx) # sched: [6:1.00] 11933 ; BROADWELL-NEXT: sarb $7, %dil # sched: [1:0.50] 11934 ; BROADWELL-NEXT: shlb $7, %dil # sched: [1:0.50] 11935 ; BROADWELL-NEXT: shrb $7, %dil # sched: [1:0.50] 11936 ; BROADWELL-NEXT: sarb $7, (%rdx) # sched: [6:1.00] 11937 ; BROADWELL-NEXT: shlb $7, (%rdx) # sched: [6:1.00] 11938 ; BROADWELL-NEXT: shrb $7, (%rdx) # sched: [6:1.00] 11939 ; BROADWELL-NEXT: sarb %cl, %dil # sched: [3:1.00] 11940 ; BROADWELL-NEXT: shlb %cl, %dil # sched: [3:1.00] 11941 ; BROADWELL-NEXT: shrb %cl, %dil # sched: [3:1.00] 11942 ; BROADWELL-NEXT: sarb %cl, (%rdx) # sched: [8:1.00] 11943 ; BROADWELL-NEXT: shlb %cl, (%rdx) # sched: [8:1.00] 11944 ; BROADWELL-NEXT: shrb %cl, (%rdx) # sched: [8:1.00] 11945 ; BROADWELL-NEXT: #NO_APP 11946 ; BROADWELL-NEXT: retq # sched: [7:1.00] 11947 ; 11948 ; SKYLAKE-LABEL: test_sar_shl_shr_8: 11949 ; SKYLAKE: # %bb.0: 11950 ; SKYLAKE-NEXT: #APP 11951 ; SKYLAKE-NEXT: sarb %dil # sched: [1:0.50] 11952 ; SKYLAKE-NEXT: shlb %dil # sched: [1:0.50] 11953 ; SKYLAKE-NEXT: shrb %dil # sched: [1:0.50] 11954 ; SKYLAKE-NEXT: sarb (%rdx) # sched: [6:1.00] 11955 ; SKYLAKE-NEXT: shlb (%rdx) # sched: [6:1.00] 11956 ; SKYLAKE-NEXT: shrb (%rdx) # sched: [6:1.00] 11957 ; SKYLAKE-NEXT: sarb $7, %dil # sched: [1:0.50] 11958 ; SKYLAKE-NEXT: shlb $7, %dil # sched: [1:0.50] 11959 ; SKYLAKE-NEXT: shrb $7, %dil # sched: [1:0.50] 11960 ; SKYLAKE-NEXT: sarb $7, (%rdx) # sched: [6:1.00] 11961 ; SKYLAKE-NEXT: shlb $7, (%rdx) # sched: [6:1.00] 11962 ; SKYLAKE-NEXT: shrb $7, (%rdx) # sched: [6:1.00] 11963 ; SKYLAKE-NEXT: sarb %cl, %dil # sched: [3:1.50] 11964 ; SKYLAKE-NEXT: shlb %cl, %dil # sched: [3:1.50] 11965 ; SKYLAKE-NEXT: shrb %cl, %dil # sched: [3:1.50] 11966 ; SKYLAKE-NEXT: sarb %cl, (%rdx) # sched: [8:1.50] 11967 ; SKYLAKE-NEXT: shlb %cl, (%rdx) # sched: [8:1.50] 11968 ; SKYLAKE-NEXT: shrb %cl, (%rdx) # sched: [8:1.50] 11969 ; SKYLAKE-NEXT: #NO_APP 11970 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 11971 ; 11972 ; SKX-LABEL: test_sar_shl_shr_8: 11973 ; SKX: # %bb.0: 11974 ; SKX-NEXT: #APP 11975 ; SKX-NEXT: sarb %dil # sched: [1:0.50] 11976 ; SKX-NEXT: shlb %dil # sched: [1:0.50] 11977 ; SKX-NEXT: shrb %dil # sched: [1:0.50] 11978 ; SKX-NEXT: sarb (%rdx) # sched: [6:1.00] 11979 ; SKX-NEXT: shlb (%rdx) # sched: [6:1.00] 11980 ; SKX-NEXT: shrb (%rdx) # sched: [6:1.00] 11981 ; SKX-NEXT: sarb $7, %dil # sched: [1:0.50] 11982 ; SKX-NEXT: shlb $7, %dil # sched: [1:0.50] 11983 ; SKX-NEXT: shrb $7, %dil # sched: [1:0.50] 11984 ; SKX-NEXT: sarb $7, (%rdx) # sched: [6:1.00] 11985 ; SKX-NEXT: shlb $7, (%rdx) # sched: [6:1.00] 11986 ; SKX-NEXT: shrb $7, (%rdx) # sched: [6:1.00] 11987 ; SKX-NEXT: sarb %cl, %dil # sched: [3:1.50] 11988 ; SKX-NEXT: shlb %cl, %dil # sched: [3:1.50] 11989 ; SKX-NEXT: shrb %cl, %dil # sched: [3:1.50] 11990 ; SKX-NEXT: sarb %cl, (%rdx) # sched: [8:1.50] 11991 ; SKX-NEXT: shlb %cl, (%rdx) # sched: [8:1.50] 11992 ; SKX-NEXT: shrb %cl, (%rdx) # sched: [8:1.50] 11993 ; SKX-NEXT: #NO_APP 11994 ; SKX-NEXT: retq # sched: [7:1.00] 11995 ; 11996 ; BTVER2-LABEL: test_sar_shl_shr_8: 11997 ; BTVER2: # %bb.0: 11998 ; BTVER2-NEXT: #APP 11999 ; BTVER2-NEXT: sarb %dil # sched: [1:0.50] 12000 ; BTVER2-NEXT: shlb %dil # sched: [1:0.50] 12001 ; BTVER2-NEXT: shrb %dil # sched: [1:0.50] 12002 ; BTVER2-NEXT: sarb (%rdx) # sched: [4:1.00] 12003 ; BTVER2-NEXT: shlb (%rdx) # sched: [4:1.00] 12004 ; BTVER2-NEXT: shrb (%rdx) # sched: [4:1.00] 12005 ; BTVER2-NEXT: sarb $7, %dil # sched: [1:0.50] 12006 ; BTVER2-NEXT: shlb $7, %dil # sched: [1:0.50] 12007 ; BTVER2-NEXT: shrb $7, %dil # sched: [1:0.50] 12008 ; BTVER2-NEXT: sarb $7, (%rdx) # sched: [4:1.00] 12009 ; BTVER2-NEXT: shlb $7, (%rdx) # sched: [4:1.00] 12010 ; BTVER2-NEXT: shrb $7, (%rdx) # sched: [4:1.00] 12011 ; BTVER2-NEXT: sarb %cl, %dil # sched: [1:0.50] 12012 ; BTVER2-NEXT: shlb %cl, %dil # sched: [1:0.50] 12013 ; BTVER2-NEXT: shrb %cl, %dil # sched: [1:0.50] 12014 ; BTVER2-NEXT: sarb %cl, (%rdx) # sched: [4:1.00] 12015 ; BTVER2-NEXT: shlb %cl, (%rdx) # sched: [4:1.00] 12016 ; BTVER2-NEXT: shrb %cl, (%rdx) # sched: [4:1.00] 12017 ; BTVER2-NEXT: #NO_APP 12018 ; BTVER2-NEXT: retq # sched: [4:1.00] 12019 ; 12020 ; ZNVER1-LABEL: test_sar_shl_shr_8: 12021 ; ZNVER1: # %bb.0: 12022 ; ZNVER1-NEXT: #APP 12023 ; ZNVER1-NEXT: sarb %dil # sched: [1:0.25] 12024 ; ZNVER1-NEXT: shlb %dil # sched: [1:0.25] 12025 ; ZNVER1-NEXT: shrb %dil # sched: [1:0.25] 12026 ; ZNVER1-NEXT: sarb (%rdx) # sched: [5:0.50] 12027 ; ZNVER1-NEXT: shlb (%rdx) # sched: [5:0.50] 12028 ; ZNVER1-NEXT: shrb (%rdx) # sched: [5:0.50] 12029 ; ZNVER1-NEXT: sarb $7, %dil # sched: [1:0.25] 12030 ; ZNVER1-NEXT: shlb $7, %dil # sched: [1:0.25] 12031 ; ZNVER1-NEXT: shrb $7, %dil # sched: [1:0.25] 12032 ; ZNVER1-NEXT: sarb $7, (%rdx) # sched: [5:0.50] 12033 ; ZNVER1-NEXT: shlb $7, (%rdx) # sched: [5:0.50] 12034 ; ZNVER1-NEXT: shrb $7, (%rdx) # sched: [5:0.50] 12035 ; ZNVER1-NEXT: sarb %cl, %dil # sched: [1:0.25] 12036 ; ZNVER1-NEXT: shlb %cl, %dil # sched: [1:0.25] 12037 ; ZNVER1-NEXT: shrb %cl, %dil # sched: [1:0.25] 12038 ; ZNVER1-NEXT: sarb %cl, (%rdx) # sched: [5:1.00] 12039 ; ZNVER1-NEXT: shlb %cl, (%rdx) # sched: [5:1.00] 12040 ; ZNVER1-NEXT: shrb %cl, (%rdx) # sched: [5:1.00] 12041 ; ZNVER1-NEXT: #NO_APP 12042 ; ZNVER1-NEXT: retq # sched: [1:0.50] 12043 call void asm sideeffect "sarb $0 \0A\09 shlb $0 \0A\09 shrb $0 \0A\09 sarb $2 \0A\09 shlb $2 \0A\09 shrb $2 \0A\09 sarb $3, $0 \0A\09 shlb $3, $0 \0A\09 shrb $3, $0 \0A\09 sarb $3, $2 \0A\09 shlb $3, $2 \0A\09 shrb $3, $2 \0A\09 sarb %CL, $0 \0A\09 shlb %CL, $0 \0A\09 shrb %CL, $0 \0A\09 sarb %CL, $2 \0A\09 shlb %CL, $2 \0A\09 shrb %CL, $2", "r,r,*m,i"(i8 %a0, i8 %a1, i8 *%a2, i8 7) 12044 ret void 12045 } 12046 define void @test_sar_shl_shr_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 12047 ; GENERIC-LABEL: test_sar_shl_shr_16: 12048 ; GENERIC: # %bb.0: 12049 ; GENERIC-NEXT: #APP 12050 ; GENERIC-NEXT: sarw %di # sched: [1:0.50] 12051 ; GENERIC-NEXT: shlw %di # sched: [1:0.50] 12052 ; GENERIC-NEXT: shrw %di # sched: [1:0.50] 12053 ; GENERIC-NEXT: sarw (%rdx) # sched: [7:1.00] 12054 ; GENERIC-NEXT: shlw (%rdx) # sched: [7:1.00] 12055 ; GENERIC-NEXT: shrw (%rdx) # sched: [7:1.00] 12056 ; GENERIC-NEXT: sarw $7, %di # sched: [1:0.50] 12057 ; GENERIC-NEXT: shlw $7, %di # sched: [1:0.50] 12058 ; GENERIC-NEXT: shrw $7, %di # sched: [1:0.50] 12059 ; GENERIC-NEXT: sarw $7, (%rdx) # sched: [7:1.00] 12060 ; GENERIC-NEXT: shlw $7, (%rdx) # sched: [7:1.00] 12061 ; GENERIC-NEXT: shrw $7, (%rdx) # sched: [7:1.00] 12062 ; GENERIC-NEXT: sarw %cl, %di # sched: [3:1.50] 12063 ; GENERIC-NEXT: shlw %cl, %di # sched: [3:1.50] 12064 ; GENERIC-NEXT: shrw %cl, %di # sched: [3:1.50] 12065 ; GENERIC-NEXT: sarw %cl, (%rdx) # sched: [9:1.50] 12066 ; GENERIC-NEXT: shlw %cl, (%rdx) # sched: [9:1.50] 12067 ; GENERIC-NEXT: shrw %cl, (%rdx) # sched: [9:1.50] 12068 ; GENERIC-NEXT: #NO_APP 12069 ; GENERIC-NEXT: retq # sched: [1:1.00] 12070 ; 12071 ; ATOM-LABEL: test_sar_shl_shr_16: 12072 ; ATOM: # %bb.0: 12073 ; ATOM-NEXT: #APP 12074 ; ATOM-NEXT: sarw %di # sched: [1:1.00] 12075 ; ATOM-NEXT: shlw %di # sched: [1:1.00] 12076 ; ATOM-NEXT: shrw %di # sched: [1:1.00] 12077 ; ATOM-NEXT: sarw (%rdx) # sched: [1:1.00] 12078 ; ATOM-NEXT: shlw (%rdx) # sched: [1:1.00] 12079 ; ATOM-NEXT: shrw (%rdx) # sched: [1:1.00] 12080 ; ATOM-NEXT: sarw $7, %di # sched: [1:1.00] 12081 ; ATOM-NEXT: shlw $7, %di # sched: [1:1.00] 12082 ; ATOM-NEXT: shrw $7, %di # sched: [1:1.00] 12083 ; ATOM-NEXT: sarw $7, (%rdx) # sched: [1:1.00] 12084 ; ATOM-NEXT: shlw $7, (%rdx) # sched: [1:1.00] 12085 ; ATOM-NEXT: shrw $7, (%rdx) # sched: [1:1.00] 12086 ; ATOM-NEXT: sarw %cl, %di # sched: [1:1.00] 12087 ; ATOM-NEXT: shlw %cl, %di # sched: [1:1.00] 12088 ; ATOM-NEXT: shrw %cl, %di # sched: [1:1.00] 12089 ; ATOM-NEXT: sarw %cl, (%rdx) # sched: [1:1.00] 12090 ; ATOM-NEXT: shlw %cl, (%rdx) # sched: [1:1.00] 12091 ; ATOM-NEXT: shrw %cl, (%rdx) # sched: [1:1.00] 12092 ; ATOM-NEXT: #NO_APP 12093 ; ATOM-NEXT: retq # sched: [79:39.50] 12094 ; 12095 ; SLM-LABEL: test_sar_shl_shr_16: 12096 ; SLM: # %bb.0: 12097 ; SLM-NEXT: #APP 12098 ; SLM-NEXT: sarw %di # sched: [1:1.00] 12099 ; SLM-NEXT: shlw %di # sched: [1:1.00] 12100 ; SLM-NEXT: shrw %di # sched: [1:1.00] 12101 ; SLM-NEXT: sarw (%rdx) # sched: [4:2.00] 12102 ; SLM-NEXT: shlw (%rdx) # sched: [4:2.00] 12103 ; SLM-NEXT: shrw (%rdx) # sched: [4:2.00] 12104 ; SLM-NEXT: sarw $7, %di # sched: [1:1.00] 12105 ; SLM-NEXT: shlw $7, %di # sched: [1:1.00] 12106 ; SLM-NEXT: shrw $7, %di # sched: [1:1.00] 12107 ; SLM-NEXT: sarw $7, (%rdx) # sched: [4:2.00] 12108 ; SLM-NEXT: shlw $7, (%rdx) # sched: [4:2.00] 12109 ; SLM-NEXT: shrw $7, (%rdx) # sched: [4:2.00] 12110 ; SLM-NEXT: sarw %cl, %di # sched: [1:1.00] 12111 ; SLM-NEXT: shlw %cl, %di # sched: [1:1.00] 12112 ; SLM-NEXT: shrw %cl, %di # sched: [1:1.00] 12113 ; SLM-NEXT: sarw %cl, (%rdx) # sched: [4:2.00] 12114 ; SLM-NEXT: shlw %cl, (%rdx) # sched: [4:2.00] 12115 ; SLM-NEXT: shrw %cl, (%rdx) # sched: [4:2.00] 12116 ; SLM-NEXT: #NO_APP 12117 ; SLM-NEXT: retq # sched: [4:1.00] 12118 ; 12119 ; SANDY-LABEL: test_sar_shl_shr_16: 12120 ; SANDY: # %bb.0: 12121 ; SANDY-NEXT: #APP 12122 ; SANDY-NEXT: sarw %di # sched: [1:0.50] 12123 ; SANDY-NEXT: shlw %di # sched: [1:0.50] 12124 ; SANDY-NEXT: shrw %di # sched: [1:0.50] 12125 ; SANDY-NEXT: sarw (%rdx) # sched: [7:1.00] 12126 ; SANDY-NEXT: shlw (%rdx) # sched: [7:1.00] 12127 ; SANDY-NEXT: shrw (%rdx) # sched: [7:1.00] 12128 ; SANDY-NEXT: sarw $7, %di # sched: [1:0.50] 12129 ; SANDY-NEXT: shlw $7, %di # sched: [1:0.50] 12130 ; SANDY-NEXT: shrw $7, %di # sched: [1:0.50] 12131 ; SANDY-NEXT: sarw $7, (%rdx) # sched: [7:1.00] 12132 ; SANDY-NEXT: shlw $7, (%rdx) # sched: [7:1.00] 12133 ; SANDY-NEXT: shrw $7, (%rdx) # sched: [7:1.00] 12134 ; SANDY-NEXT: sarw %cl, %di # sched: [3:1.50] 12135 ; SANDY-NEXT: shlw %cl, %di # sched: [3:1.50] 12136 ; SANDY-NEXT: shrw %cl, %di # sched: [3:1.50] 12137 ; SANDY-NEXT: sarw %cl, (%rdx) # sched: [9:1.50] 12138 ; SANDY-NEXT: shlw %cl, (%rdx) # sched: [9:1.50] 12139 ; SANDY-NEXT: shrw %cl, (%rdx) # sched: [9:1.50] 12140 ; SANDY-NEXT: #NO_APP 12141 ; SANDY-NEXT: retq # sched: [1:1.00] 12142 ; 12143 ; HASWELL-LABEL: test_sar_shl_shr_16: 12144 ; HASWELL: # %bb.0: 12145 ; HASWELL-NEXT: #APP 12146 ; HASWELL-NEXT: sarw %di # sched: [1:0.50] 12147 ; HASWELL-NEXT: shlw %di # sched: [1:0.50] 12148 ; HASWELL-NEXT: shrw %di # sched: [1:0.50] 12149 ; HASWELL-NEXT: sarw (%rdx) # sched: [7:1.00] 12150 ; HASWELL-NEXT: shlw (%rdx) # sched: [7:1.00] 12151 ; HASWELL-NEXT: shrw (%rdx) # sched: [7:1.00] 12152 ; HASWELL-NEXT: sarw $7, %di # sched: [1:0.50] 12153 ; HASWELL-NEXT: shlw $7, %di # sched: [1:0.50] 12154 ; HASWELL-NEXT: shrw $7, %di # sched: [1:0.50] 12155 ; HASWELL-NEXT: sarw $7, (%rdx) # sched: [7:1.00] 12156 ; HASWELL-NEXT: shlw $7, (%rdx) # sched: [7:1.00] 12157 ; HASWELL-NEXT: shrw $7, (%rdx) # sched: [7:1.00] 12158 ; HASWELL-NEXT: sarw %cl, %di # sched: [3:1.00] 12159 ; HASWELL-NEXT: shlw %cl, %di # sched: [3:1.00] 12160 ; HASWELL-NEXT: shrw %cl, %di # sched: [3:1.00] 12161 ; HASWELL-NEXT: sarw %cl, (%rdx) # sched: [9:1.00] 12162 ; HASWELL-NEXT: shlw %cl, (%rdx) # sched: [9:1.00] 12163 ; HASWELL-NEXT: shrw %cl, (%rdx) # sched: [9:1.00] 12164 ; HASWELL-NEXT: #NO_APP 12165 ; HASWELL-NEXT: retq # sched: [7:1.00] 12166 ; 12167 ; BROADWELL-LABEL: test_sar_shl_shr_16: 12168 ; BROADWELL: # %bb.0: 12169 ; BROADWELL-NEXT: #APP 12170 ; BROADWELL-NEXT: sarw %di # sched: [1:0.50] 12171 ; BROADWELL-NEXT: shlw %di # sched: [1:0.50] 12172 ; BROADWELL-NEXT: shrw %di # sched: [1:0.50] 12173 ; BROADWELL-NEXT: sarw (%rdx) # sched: [6:1.00] 12174 ; BROADWELL-NEXT: shlw (%rdx) # sched: [6:1.00] 12175 ; BROADWELL-NEXT: shrw (%rdx) # sched: [6:1.00] 12176 ; BROADWELL-NEXT: sarw $7, %di # sched: [1:0.50] 12177 ; BROADWELL-NEXT: shlw $7, %di # sched: [1:0.50] 12178 ; BROADWELL-NEXT: shrw $7, %di # sched: [1:0.50] 12179 ; BROADWELL-NEXT: sarw $7, (%rdx) # sched: [6:1.00] 12180 ; BROADWELL-NEXT: shlw $7, (%rdx) # sched: [6:1.00] 12181 ; BROADWELL-NEXT: shrw $7, (%rdx) # sched: [6:1.00] 12182 ; BROADWELL-NEXT: sarw %cl, %di # sched: [3:1.00] 12183 ; BROADWELL-NEXT: shlw %cl, %di # sched: [3:1.00] 12184 ; BROADWELL-NEXT: shrw %cl, %di # sched: [3:1.00] 12185 ; BROADWELL-NEXT: sarw %cl, (%rdx) # sched: [8:1.00] 12186 ; BROADWELL-NEXT: shlw %cl, (%rdx) # sched: [8:1.00] 12187 ; BROADWELL-NEXT: shrw %cl, (%rdx) # sched: [8:1.00] 12188 ; BROADWELL-NEXT: #NO_APP 12189 ; BROADWELL-NEXT: retq # sched: [7:1.00] 12190 ; 12191 ; SKYLAKE-LABEL: test_sar_shl_shr_16: 12192 ; SKYLAKE: # %bb.0: 12193 ; SKYLAKE-NEXT: #APP 12194 ; SKYLAKE-NEXT: sarw %di # sched: [1:0.50] 12195 ; SKYLAKE-NEXT: shlw %di # sched: [1:0.50] 12196 ; SKYLAKE-NEXT: shrw %di # sched: [1:0.50] 12197 ; SKYLAKE-NEXT: sarw (%rdx) # sched: [6:1.00] 12198 ; SKYLAKE-NEXT: shlw (%rdx) # sched: [6:1.00] 12199 ; SKYLAKE-NEXT: shrw (%rdx) # sched: [6:1.00] 12200 ; SKYLAKE-NEXT: sarw $7, %di # sched: [1:0.50] 12201 ; SKYLAKE-NEXT: shlw $7, %di # sched: [1:0.50] 12202 ; SKYLAKE-NEXT: shrw $7, %di # sched: [1:0.50] 12203 ; SKYLAKE-NEXT: sarw $7, (%rdx) # sched: [6:1.00] 12204 ; SKYLAKE-NEXT: shlw $7, (%rdx) # sched: [6:1.00] 12205 ; SKYLAKE-NEXT: shrw $7, (%rdx) # sched: [6:1.00] 12206 ; SKYLAKE-NEXT: sarw %cl, %di # sched: [3:1.50] 12207 ; SKYLAKE-NEXT: shlw %cl, %di # sched: [3:1.50] 12208 ; SKYLAKE-NEXT: shrw %cl, %di # sched: [3:1.50] 12209 ; SKYLAKE-NEXT: sarw %cl, (%rdx) # sched: [8:1.50] 12210 ; SKYLAKE-NEXT: shlw %cl, (%rdx) # sched: [8:1.50] 12211 ; SKYLAKE-NEXT: shrw %cl, (%rdx) # sched: [8:1.50] 12212 ; SKYLAKE-NEXT: #NO_APP 12213 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 12214 ; 12215 ; SKX-LABEL: test_sar_shl_shr_16: 12216 ; SKX: # %bb.0: 12217 ; SKX-NEXT: #APP 12218 ; SKX-NEXT: sarw %di # sched: [1:0.50] 12219 ; SKX-NEXT: shlw %di # sched: [1:0.50] 12220 ; SKX-NEXT: shrw %di # sched: [1:0.50] 12221 ; SKX-NEXT: sarw (%rdx) # sched: [6:1.00] 12222 ; SKX-NEXT: shlw (%rdx) # sched: [6:1.00] 12223 ; SKX-NEXT: shrw (%rdx) # sched: [6:1.00] 12224 ; SKX-NEXT: sarw $7, %di # sched: [1:0.50] 12225 ; SKX-NEXT: shlw $7, %di # sched: [1:0.50] 12226 ; SKX-NEXT: shrw $7, %di # sched: [1:0.50] 12227 ; SKX-NEXT: sarw $7, (%rdx) # sched: [6:1.00] 12228 ; SKX-NEXT: shlw $7, (%rdx) # sched: [6:1.00] 12229 ; SKX-NEXT: shrw $7, (%rdx) # sched: [6:1.00] 12230 ; SKX-NEXT: sarw %cl, %di # sched: [3:1.50] 12231 ; SKX-NEXT: shlw %cl, %di # sched: [3:1.50] 12232 ; SKX-NEXT: shrw %cl, %di # sched: [3:1.50] 12233 ; SKX-NEXT: sarw %cl, (%rdx) # sched: [8:1.50] 12234 ; SKX-NEXT: shlw %cl, (%rdx) # sched: [8:1.50] 12235 ; SKX-NEXT: shrw %cl, (%rdx) # sched: [8:1.50] 12236 ; SKX-NEXT: #NO_APP 12237 ; SKX-NEXT: retq # sched: [7:1.00] 12238 ; 12239 ; BTVER2-LABEL: test_sar_shl_shr_16: 12240 ; BTVER2: # %bb.0: 12241 ; BTVER2-NEXT: #APP 12242 ; BTVER2-NEXT: sarw %di # sched: [1:0.50] 12243 ; BTVER2-NEXT: shlw %di # sched: [1:0.50] 12244 ; BTVER2-NEXT: shrw %di # sched: [1:0.50] 12245 ; BTVER2-NEXT: sarw (%rdx) # sched: [4:1.00] 12246 ; BTVER2-NEXT: shlw (%rdx) # sched: [4:1.00] 12247 ; BTVER2-NEXT: shrw (%rdx) # sched: [4:1.00] 12248 ; BTVER2-NEXT: sarw $7, %di # sched: [1:0.50] 12249 ; BTVER2-NEXT: shlw $7, %di # sched: [1:0.50] 12250 ; BTVER2-NEXT: shrw $7, %di # sched: [1:0.50] 12251 ; BTVER2-NEXT: sarw $7, (%rdx) # sched: [4:1.00] 12252 ; BTVER2-NEXT: shlw $7, (%rdx) # sched: [4:1.00] 12253 ; BTVER2-NEXT: shrw $7, (%rdx) # sched: [4:1.00] 12254 ; BTVER2-NEXT: sarw %cl, %di # sched: [1:0.50] 12255 ; BTVER2-NEXT: shlw %cl, %di # sched: [1:0.50] 12256 ; BTVER2-NEXT: shrw %cl, %di # sched: [1:0.50] 12257 ; BTVER2-NEXT: sarw %cl, (%rdx) # sched: [4:1.00] 12258 ; BTVER2-NEXT: shlw %cl, (%rdx) # sched: [4:1.00] 12259 ; BTVER2-NEXT: shrw %cl, (%rdx) # sched: [4:1.00] 12260 ; BTVER2-NEXT: #NO_APP 12261 ; BTVER2-NEXT: retq # sched: [4:1.00] 12262 ; 12263 ; ZNVER1-LABEL: test_sar_shl_shr_16: 12264 ; ZNVER1: # %bb.0: 12265 ; ZNVER1-NEXT: #APP 12266 ; ZNVER1-NEXT: sarw %di # sched: [1:0.25] 12267 ; ZNVER1-NEXT: shlw %di # sched: [1:0.25] 12268 ; ZNVER1-NEXT: shrw %di # sched: [1:0.25] 12269 ; ZNVER1-NEXT: sarw (%rdx) # sched: [5:0.50] 12270 ; ZNVER1-NEXT: shlw (%rdx) # sched: [5:0.50] 12271 ; ZNVER1-NEXT: shrw (%rdx) # sched: [5:0.50] 12272 ; ZNVER1-NEXT: sarw $7, %di # sched: [1:0.25] 12273 ; ZNVER1-NEXT: shlw $7, %di # sched: [1:0.25] 12274 ; ZNVER1-NEXT: shrw $7, %di # sched: [1:0.25] 12275 ; ZNVER1-NEXT: sarw $7, (%rdx) # sched: [5:0.50] 12276 ; ZNVER1-NEXT: shlw $7, (%rdx) # sched: [5:0.50] 12277 ; ZNVER1-NEXT: shrw $7, (%rdx) # sched: [5:0.50] 12278 ; ZNVER1-NEXT: sarw %cl, %di # sched: [1:0.25] 12279 ; ZNVER1-NEXT: shlw %cl, %di # sched: [1:0.25] 12280 ; ZNVER1-NEXT: shrw %cl, %di # sched: [1:0.25] 12281 ; ZNVER1-NEXT: sarw %cl, (%rdx) # sched: [5:1.00] 12282 ; ZNVER1-NEXT: shlw %cl, (%rdx) # sched: [5:1.00] 12283 ; ZNVER1-NEXT: shrw %cl, (%rdx) # sched: [5:1.00] 12284 ; ZNVER1-NEXT: #NO_APP 12285 ; ZNVER1-NEXT: retq # sched: [1:0.50] 12286 call void asm sideeffect "sarw $0 \0A\09 shlw $0 \0A\09 shrw $0 \0A\09 sarw $2 \0A\09 shlw $2 \0A\09 shrw $2 \0A\09 sarw $3, $0 \0A\09 shlw $3, $0 \0A\09 shrw $3, $0 \0A\09 sarw $3, $2 \0A\09 shlw $3, $2 \0A\09 shrw $3, $2 \0A\09 sarw %CL, $0 \0A\09 shlw %CL, $0 \0A\09 shrw %CL, $0 \0A\09 sarw %CL, $2 \0A\09 shlw %CL, $2 \0A\09 shrw %CL, $2", "r,r,*m,i"(i16 %a0, i16 %a1, i16 *%a2, i8 7) 12287 ret void 12288 } 12289 define void @test_sar_shl_shr_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 12290 ; GENERIC-LABEL: test_sar_shl_shr_32: 12291 ; GENERIC: # %bb.0: 12292 ; GENERIC-NEXT: #APP 12293 ; GENERIC-NEXT: sarl %edi # sched: [1:0.50] 12294 ; GENERIC-NEXT: shll %edi # sched: [1:0.50] 12295 ; GENERIC-NEXT: shrl %edi # sched: [1:0.50] 12296 ; GENERIC-NEXT: sarl (%rdx) # sched: [7:1.00] 12297 ; GENERIC-NEXT: shll (%rdx) # sched: [7:1.00] 12298 ; GENERIC-NEXT: shrl (%rdx) # sched: [7:1.00] 12299 ; GENERIC-NEXT: sarl $7, %edi # sched: [1:0.50] 12300 ; GENERIC-NEXT: shll $7, %edi # sched: [1:0.50] 12301 ; GENERIC-NEXT: shrl $7, %edi # sched: [1:0.50] 12302 ; GENERIC-NEXT: sarl $7, (%rdx) # sched: [7:1.00] 12303 ; GENERIC-NEXT: shll $7, (%rdx) # sched: [7:1.00] 12304 ; GENERIC-NEXT: shrl $7, (%rdx) # sched: [7:1.00] 12305 ; GENERIC-NEXT: sarl %cl, %edi # sched: [3:1.50] 12306 ; GENERIC-NEXT: shll %cl, %edi # sched: [3:1.50] 12307 ; GENERIC-NEXT: shrl %cl, %edi # sched: [3:1.50] 12308 ; GENERIC-NEXT: sarl %cl, (%rdx) # sched: [9:1.50] 12309 ; GENERIC-NEXT: shll %cl, (%rdx) # sched: [9:1.50] 12310 ; GENERIC-NEXT: shrl %cl, (%rdx) # sched: [9:1.50] 12311 ; GENERIC-NEXT: #NO_APP 12312 ; GENERIC-NEXT: retq # sched: [1:1.00] 12313 ; 12314 ; ATOM-LABEL: test_sar_shl_shr_32: 12315 ; ATOM: # %bb.0: 12316 ; ATOM-NEXT: #APP 12317 ; ATOM-NEXT: sarl %edi # sched: [1:1.00] 12318 ; ATOM-NEXT: shll %edi # sched: [1:1.00] 12319 ; ATOM-NEXT: shrl %edi # sched: [1:1.00] 12320 ; ATOM-NEXT: sarl (%rdx) # sched: [1:1.00] 12321 ; ATOM-NEXT: shll (%rdx) # sched: [1:1.00] 12322 ; ATOM-NEXT: shrl (%rdx) # sched: [1:1.00] 12323 ; ATOM-NEXT: sarl $7, %edi # sched: [1:1.00] 12324 ; ATOM-NEXT: shll $7, %edi # sched: [1:1.00] 12325 ; ATOM-NEXT: shrl $7, %edi # sched: [1:1.00] 12326 ; ATOM-NEXT: sarl $7, (%rdx) # sched: [1:1.00] 12327 ; ATOM-NEXT: shll $7, (%rdx) # sched: [1:1.00] 12328 ; ATOM-NEXT: shrl $7, (%rdx) # sched: [1:1.00] 12329 ; ATOM-NEXT: sarl %cl, %edi # sched: [1:1.00] 12330 ; ATOM-NEXT: shll %cl, %edi # sched: [1:1.00] 12331 ; ATOM-NEXT: shrl %cl, %edi # sched: [1:1.00] 12332 ; ATOM-NEXT: sarl %cl, (%rdx) # sched: [1:1.00] 12333 ; ATOM-NEXT: shll %cl, (%rdx) # sched: [1:1.00] 12334 ; ATOM-NEXT: shrl %cl, (%rdx) # sched: [1:1.00] 12335 ; ATOM-NEXT: #NO_APP 12336 ; ATOM-NEXT: retq # sched: [79:39.50] 12337 ; 12338 ; SLM-LABEL: test_sar_shl_shr_32: 12339 ; SLM: # %bb.0: 12340 ; SLM-NEXT: #APP 12341 ; SLM-NEXT: sarl %edi # sched: [1:1.00] 12342 ; SLM-NEXT: shll %edi # sched: [1:1.00] 12343 ; SLM-NEXT: shrl %edi # sched: [1:1.00] 12344 ; SLM-NEXT: sarl (%rdx) # sched: [4:2.00] 12345 ; SLM-NEXT: shll (%rdx) # sched: [4:2.00] 12346 ; SLM-NEXT: shrl (%rdx) # sched: [4:2.00] 12347 ; SLM-NEXT: sarl $7, %edi # sched: [1:1.00] 12348 ; SLM-NEXT: shll $7, %edi # sched: [1:1.00] 12349 ; SLM-NEXT: shrl $7, %edi # sched: [1:1.00] 12350 ; SLM-NEXT: sarl $7, (%rdx) # sched: [4:2.00] 12351 ; SLM-NEXT: shll $7, (%rdx) # sched: [4:2.00] 12352 ; SLM-NEXT: shrl $7, (%rdx) # sched: [4:2.00] 12353 ; SLM-NEXT: sarl %cl, %edi # sched: [1:1.00] 12354 ; SLM-NEXT: shll %cl, %edi # sched: [1:1.00] 12355 ; SLM-NEXT: shrl %cl, %edi # sched: [1:1.00] 12356 ; SLM-NEXT: sarl %cl, (%rdx) # sched: [4:2.00] 12357 ; SLM-NEXT: shll %cl, (%rdx) # sched: [4:2.00] 12358 ; SLM-NEXT: shrl %cl, (%rdx) # sched: [4:2.00] 12359 ; SLM-NEXT: #NO_APP 12360 ; SLM-NEXT: retq # sched: [4:1.00] 12361 ; 12362 ; SANDY-LABEL: test_sar_shl_shr_32: 12363 ; SANDY: # %bb.0: 12364 ; SANDY-NEXT: #APP 12365 ; SANDY-NEXT: sarl %edi # sched: [1:0.50] 12366 ; SANDY-NEXT: shll %edi # sched: [1:0.50] 12367 ; SANDY-NEXT: shrl %edi # sched: [1:0.50] 12368 ; SANDY-NEXT: sarl (%rdx) # sched: [7:1.00] 12369 ; SANDY-NEXT: shll (%rdx) # sched: [7:1.00] 12370 ; SANDY-NEXT: shrl (%rdx) # sched: [7:1.00] 12371 ; SANDY-NEXT: sarl $7, %edi # sched: [1:0.50] 12372 ; SANDY-NEXT: shll $7, %edi # sched: [1:0.50] 12373 ; SANDY-NEXT: shrl $7, %edi # sched: [1:0.50] 12374 ; SANDY-NEXT: sarl $7, (%rdx) # sched: [7:1.00] 12375 ; SANDY-NEXT: shll $7, (%rdx) # sched: [7:1.00] 12376 ; SANDY-NEXT: shrl $7, (%rdx) # sched: [7:1.00] 12377 ; SANDY-NEXT: sarl %cl, %edi # sched: [3:1.50] 12378 ; SANDY-NEXT: shll %cl, %edi # sched: [3:1.50] 12379 ; SANDY-NEXT: shrl %cl, %edi # sched: [3:1.50] 12380 ; SANDY-NEXT: sarl %cl, (%rdx) # sched: [9:1.50] 12381 ; SANDY-NEXT: shll %cl, (%rdx) # sched: [9:1.50] 12382 ; SANDY-NEXT: shrl %cl, (%rdx) # sched: [9:1.50] 12383 ; SANDY-NEXT: #NO_APP 12384 ; SANDY-NEXT: retq # sched: [1:1.00] 12385 ; 12386 ; HASWELL-LABEL: test_sar_shl_shr_32: 12387 ; HASWELL: # %bb.0: 12388 ; HASWELL-NEXT: #APP 12389 ; HASWELL-NEXT: sarl %edi # sched: [1:0.50] 12390 ; HASWELL-NEXT: shll %edi # sched: [1:0.50] 12391 ; HASWELL-NEXT: shrl %edi # sched: [1:0.50] 12392 ; HASWELL-NEXT: sarl (%rdx) # sched: [7:1.00] 12393 ; HASWELL-NEXT: shll (%rdx) # sched: [7:1.00] 12394 ; HASWELL-NEXT: shrl (%rdx) # sched: [7:1.00] 12395 ; HASWELL-NEXT: sarl $7, %edi # sched: [1:0.50] 12396 ; HASWELL-NEXT: shll $7, %edi # sched: [1:0.50] 12397 ; HASWELL-NEXT: shrl $7, %edi # sched: [1:0.50] 12398 ; HASWELL-NEXT: sarl $7, (%rdx) # sched: [7:1.00] 12399 ; HASWELL-NEXT: shll $7, (%rdx) # sched: [7:1.00] 12400 ; HASWELL-NEXT: shrl $7, (%rdx) # sched: [7:1.00] 12401 ; HASWELL-NEXT: sarl %cl, %edi # sched: [3:1.00] 12402 ; HASWELL-NEXT: shll %cl, %edi # sched: [3:1.00] 12403 ; HASWELL-NEXT: shrl %cl, %edi # sched: [3:1.00] 12404 ; HASWELL-NEXT: sarl %cl, (%rdx) # sched: [9:1.00] 12405 ; HASWELL-NEXT: shll %cl, (%rdx) # sched: [9:1.00] 12406 ; HASWELL-NEXT: shrl %cl, (%rdx) # sched: [9:1.00] 12407 ; HASWELL-NEXT: #NO_APP 12408 ; HASWELL-NEXT: retq # sched: [7:1.00] 12409 ; 12410 ; BROADWELL-LABEL: test_sar_shl_shr_32: 12411 ; BROADWELL: # %bb.0: 12412 ; BROADWELL-NEXT: #APP 12413 ; BROADWELL-NEXT: sarl %edi # sched: [1:0.50] 12414 ; BROADWELL-NEXT: shll %edi # sched: [1:0.50] 12415 ; BROADWELL-NEXT: shrl %edi # sched: [1:0.50] 12416 ; BROADWELL-NEXT: sarl (%rdx) # sched: [6:1.00] 12417 ; BROADWELL-NEXT: shll (%rdx) # sched: [6:1.00] 12418 ; BROADWELL-NEXT: shrl (%rdx) # sched: [6:1.00] 12419 ; BROADWELL-NEXT: sarl $7, %edi # sched: [1:0.50] 12420 ; BROADWELL-NEXT: shll $7, %edi # sched: [1:0.50] 12421 ; BROADWELL-NEXT: shrl $7, %edi # sched: [1:0.50] 12422 ; BROADWELL-NEXT: sarl $7, (%rdx) # sched: [6:1.00] 12423 ; BROADWELL-NEXT: shll $7, (%rdx) # sched: [6:1.00] 12424 ; BROADWELL-NEXT: shrl $7, (%rdx) # sched: [6:1.00] 12425 ; BROADWELL-NEXT: sarl %cl, %edi # sched: [3:1.00] 12426 ; BROADWELL-NEXT: shll %cl, %edi # sched: [3:1.00] 12427 ; BROADWELL-NEXT: shrl %cl, %edi # sched: [3:1.00] 12428 ; BROADWELL-NEXT: sarl %cl, (%rdx) # sched: [8:1.00] 12429 ; BROADWELL-NEXT: shll %cl, (%rdx) # sched: [8:1.00] 12430 ; BROADWELL-NEXT: shrl %cl, (%rdx) # sched: [8:1.00] 12431 ; BROADWELL-NEXT: #NO_APP 12432 ; BROADWELL-NEXT: retq # sched: [7:1.00] 12433 ; 12434 ; SKYLAKE-LABEL: test_sar_shl_shr_32: 12435 ; SKYLAKE: # %bb.0: 12436 ; SKYLAKE-NEXT: #APP 12437 ; SKYLAKE-NEXT: sarl %edi # sched: [1:0.50] 12438 ; SKYLAKE-NEXT: shll %edi # sched: [1:0.50] 12439 ; SKYLAKE-NEXT: shrl %edi # sched: [1:0.50] 12440 ; SKYLAKE-NEXT: sarl (%rdx) # sched: [6:1.00] 12441 ; SKYLAKE-NEXT: shll (%rdx) # sched: [6:1.00] 12442 ; SKYLAKE-NEXT: shrl (%rdx) # sched: [6:1.00] 12443 ; SKYLAKE-NEXT: sarl $7, %edi # sched: [1:0.50] 12444 ; SKYLAKE-NEXT: shll $7, %edi # sched: [1:0.50] 12445 ; SKYLAKE-NEXT: shrl $7, %edi # sched: [1:0.50] 12446 ; SKYLAKE-NEXT: sarl $7, (%rdx) # sched: [6:1.00] 12447 ; SKYLAKE-NEXT: shll $7, (%rdx) # sched: [6:1.00] 12448 ; SKYLAKE-NEXT: shrl $7, (%rdx) # sched: [6:1.00] 12449 ; SKYLAKE-NEXT: sarl %cl, %edi # sched: [3:1.50] 12450 ; SKYLAKE-NEXT: shll %cl, %edi # sched: [3:1.50] 12451 ; SKYLAKE-NEXT: shrl %cl, %edi # sched: [3:1.50] 12452 ; SKYLAKE-NEXT: sarl %cl, (%rdx) # sched: [8:1.50] 12453 ; SKYLAKE-NEXT: shll %cl, (%rdx) # sched: [8:1.50] 12454 ; SKYLAKE-NEXT: shrl %cl, (%rdx) # sched: [8:1.50] 12455 ; SKYLAKE-NEXT: #NO_APP 12456 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 12457 ; 12458 ; SKX-LABEL: test_sar_shl_shr_32: 12459 ; SKX: # %bb.0: 12460 ; SKX-NEXT: #APP 12461 ; SKX-NEXT: sarl %edi # sched: [1:0.50] 12462 ; SKX-NEXT: shll %edi # sched: [1:0.50] 12463 ; SKX-NEXT: shrl %edi # sched: [1:0.50] 12464 ; SKX-NEXT: sarl (%rdx) # sched: [6:1.00] 12465 ; SKX-NEXT: shll (%rdx) # sched: [6:1.00] 12466 ; SKX-NEXT: shrl (%rdx) # sched: [6:1.00] 12467 ; SKX-NEXT: sarl $7, %edi # sched: [1:0.50] 12468 ; SKX-NEXT: shll $7, %edi # sched: [1:0.50] 12469 ; SKX-NEXT: shrl $7, %edi # sched: [1:0.50] 12470 ; SKX-NEXT: sarl $7, (%rdx) # sched: [6:1.00] 12471 ; SKX-NEXT: shll $7, (%rdx) # sched: [6:1.00] 12472 ; SKX-NEXT: shrl $7, (%rdx) # sched: [6:1.00] 12473 ; SKX-NEXT: sarl %cl, %edi # sched: [3:1.50] 12474 ; SKX-NEXT: shll %cl, %edi # sched: [3:1.50] 12475 ; SKX-NEXT: shrl %cl, %edi # sched: [3:1.50] 12476 ; SKX-NEXT: sarl %cl, (%rdx) # sched: [8:1.50] 12477 ; SKX-NEXT: shll %cl, (%rdx) # sched: [8:1.50] 12478 ; SKX-NEXT: shrl %cl, (%rdx) # sched: [8:1.50] 12479 ; SKX-NEXT: #NO_APP 12480 ; SKX-NEXT: retq # sched: [7:1.00] 12481 ; 12482 ; BTVER2-LABEL: test_sar_shl_shr_32: 12483 ; BTVER2: # %bb.0: 12484 ; BTVER2-NEXT: #APP 12485 ; BTVER2-NEXT: sarl %edi # sched: [1:0.50] 12486 ; BTVER2-NEXT: shll %edi # sched: [1:0.50] 12487 ; BTVER2-NEXT: shrl %edi # sched: [1:0.50] 12488 ; BTVER2-NEXT: sarl (%rdx) # sched: [4:1.00] 12489 ; BTVER2-NEXT: shll (%rdx) # sched: [4:1.00] 12490 ; BTVER2-NEXT: shrl (%rdx) # sched: [4:1.00] 12491 ; BTVER2-NEXT: sarl $7, %edi # sched: [1:0.50] 12492 ; BTVER2-NEXT: shll $7, %edi # sched: [1:0.50] 12493 ; BTVER2-NEXT: shrl $7, %edi # sched: [1:0.50] 12494 ; BTVER2-NEXT: sarl $7, (%rdx) # sched: [4:1.00] 12495 ; BTVER2-NEXT: shll $7, (%rdx) # sched: [4:1.00] 12496 ; BTVER2-NEXT: shrl $7, (%rdx) # sched: [4:1.00] 12497 ; BTVER2-NEXT: sarl %cl, %edi # sched: [1:0.50] 12498 ; BTVER2-NEXT: shll %cl, %edi # sched: [1:0.50] 12499 ; BTVER2-NEXT: shrl %cl, %edi # sched: [1:0.50] 12500 ; BTVER2-NEXT: sarl %cl, (%rdx) # sched: [4:1.00] 12501 ; BTVER2-NEXT: shll %cl, (%rdx) # sched: [4:1.00] 12502 ; BTVER2-NEXT: shrl %cl, (%rdx) # sched: [4:1.00] 12503 ; BTVER2-NEXT: #NO_APP 12504 ; BTVER2-NEXT: retq # sched: [4:1.00] 12505 ; 12506 ; ZNVER1-LABEL: test_sar_shl_shr_32: 12507 ; ZNVER1: # %bb.0: 12508 ; ZNVER1-NEXT: #APP 12509 ; ZNVER1-NEXT: sarl %edi # sched: [1:0.25] 12510 ; ZNVER1-NEXT: shll %edi # sched: [1:0.25] 12511 ; ZNVER1-NEXT: shrl %edi # sched: [1:0.25] 12512 ; ZNVER1-NEXT: sarl (%rdx) # sched: [5:0.50] 12513 ; ZNVER1-NEXT: shll (%rdx) # sched: [5:0.50] 12514 ; ZNVER1-NEXT: shrl (%rdx) # sched: [5:0.50] 12515 ; ZNVER1-NEXT: sarl $7, %edi # sched: [1:0.25] 12516 ; ZNVER1-NEXT: shll $7, %edi # sched: [1:0.25] 12517 ; ZNVER1-NEXT: shrl $7, %edi # sched: [1:0.25] 12518 ; ZNVER1-NEXT: sarl $7, (%rdx) # sched: [5:0.50] 12519 ; ZNVER1-NEXT: shll $7, (%rdx) # sched: [5:0.50] 12520 ; ZNVER1-NEXT: shrl $7, (%rdx) # sched: [5:0.50] 12521 ; ZNVER1-NEXT: sarl %cl, %edi # sched: [1:0.25] 12522 ; ZNVER1-NEXT: shll %cl, %edi # sched: [1:0.25] 12523 ; ZNVER1-NEXT: shrl %cl, %edi # sched: [1:0.25] 12524 ; ZNVER1-NEXT: sarl %cl, (%rdx) # sched: [5:1.00] 12525 ; ZNVER1-NEXT: shll %cl, (%rdx) # sched: [5:1.00] 12526 ; ZNVER1-NEXT: shrl %cl, (%rdx) # sched: [5:1.00] 12527 ; ZNVER1-NEXT: #NO_APP 12528 ; ZNVER1-NEXT: retq # sched: [1:0.50] 12529 call void asm sideeffect "sarl $0 \0A\09 shll $0 \0A\09 shrl $0 \0A\09 sarl $2 \0A\09 shll $2 \0A\09 shrl $2 \0A\09 sarl $3, $0 \0A\09 shll $3, $0 \0A\09 shrl $3, $0 \0A\09 sarl $3, $2 \0A\09 shll $3, $2 \0A\09 shrl $3, $2 \0A\09 sarl %CL, $0 \0A\09 shll %CL, $0 \0A\09 shrl %CL, $0 \0A\09 sarl %CL, $2 \0A\09 shll %CL, $2 \0A\09 shrl %CL, $2", "r,r,*m,i"(i32 %a0, i32 %a1, i32 *%a2, i8 7) 12530 ret void 12531 } 12532 define void @test_sar_shl_shr_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 12533 ; GENERIC-LABEL: test_sar_shl_shr_64: 12534 ; GENERIC: # %bb.0: 12535 ; GENERIC-NEXT: #APP 12536 ; GENERIC-NEXT: sarq %rdi # sched: [1:0.50] 12537 ; GENERIC-NEXT: shlq %rdi # sched: [1:0.50] 12538 ; GENERIC-NEXT: shrq %rdi # sched: [1:0.50] 12539 ; GENERIC-NEXT: sarq (%rdx) # sched: [7:1.00] 12540 ; GENERIC-NEXT: shlq (%rdx) # sched: [7:1.00] 12541 ; GENERIC-NEXT: shrq (%rdx) # sched: [7:1.00] 12542 ; GENERIC-NEXT: sarq $7, %rdi # sched: [1:0.50] 12543 ; GENERIC-NEXT: shlq $7, %rdi # sched: [1:0.50] 12544 ; GENERIC-NEXT: shrq $7, %rdi # sched: [1:0.50] 12545 ; GENERIC-NEXT: sarq $7, (%rdx) # sched: [7:1.00] 12546 ; GENERIC-NEXT: shlq $7, (%rdx) # sched: [7:1.00] 12547 ; GENERIC-NEXT: shrq $7, (%rdx) # sched: [7:1.00] 12548 ; GENERIC-NEXT: sarq %cl, %rdi # sched: [3:1.50] 12549 ; GENERIC-NEXT: shlq %cl, %rdi # sched: [3:1.50] 12550 ; GENERIC-NEXT: shrq %cl, %rdi # sched: [3:1.50] 12551 ; GENERIC-NEXT: sarq %cl, (%rdx) # sched: [9:1.50] 12552 ; GENERIC-NEXT: shlq %cl, (%rdx) # sched: [9:1.50] 12553 ; GENERIC-NEXT: shrq %cl, (%rdx) # sched: [9:1.50] 12554 ; GENERIC-NEXT: #NO_APP 12555 ; GENERIC-NEXT: retq # sched: [1:1.00] 12556 ; 12557 ; ATOM-LABEL: test_sar_shl_shr_64: 12558 ; ATOM: # %bb.0: 12559 ; ATOM-NEXT: #APP 12560 ; ATOM-NEXT: sarq %rdi # sched: [1:1.00] 12561 ; ATOM-NEXT: shlq %rdi # sched: [1:1.00] 12562 ; ATOM-NEXT: shrq %rdi # sched: [1:1.00] 12563 ; ATOM-NEXT: sarq (%rdx) # sched: [1:1.00] 12564 ; ATOM-NEXT: shlq (%rdx) # sched: [1:1.00] 12565 ; ATOM-NEXT: shrq (%rdx) # sched: [1:1.00] 12566 ; ATOM-NEXT: sarq $7, %rdi # sched: [1:1.00] 12567 ; ATOM-NEXT: shlq $7, %rdi # sched: [1:1.00] 12568 ; ATOM-NEXT: shrq $7, %rdi # sched: [1:1.00] 12569 ; ATOM-NEXT: sarq $7, (%rdx) # sched: [1:1.00] 12570 ; ATOM-NEXT: shlq $7, (%rdx) # sched: [1:1.00] 12571 ; ATOM-NEXT: shrq $7, (%rdx) # sched: [1:1.00] 12572 ; ATOM-NEXT: sarq %cl, %rdi # sched: [1:1.00] 12573 ; ATOM-NEXT: shlq %cl, %rdi # sched: [1:1.00] 12574 ; ATOM-NEXT: shrq %cl, %rdi # sched: [1:1.00] 12575 ; ATOM-NEXT: sarq %cl, (%rdx) # sched: [1:1.00] 12576 ; ATOM-NEXT: shlq %cl, (%rdx) # sched: [1:1.00] 12577 ; ATOM-NEXT: shrq %cl, (%rdx) # sched: [1:1.00] 12578 ; ATOM-NEXT: #NO_APP 12579 ; ATOM-NEXT: retq # sched: [79:39.50] 12580 ; 12581 ; SLM-LABEL: test_sar_shl_shr_64: 12582 ; SLM: # %bb.0: 12583 ; SLM-NEXT: #APP 12584 ; SLM-NEXT: sarq %rdi # sched: [1:1.00] 12585 ; SLM-NEXT: shlq %rdi # sched: [1:1.00] 12586 ; SLM-NEXT: shrq %rdi # sched: [1:1.00] 12587 ; SLM-NEXT: sarq (%rdx) # sched: [4:2.00] 12588 ; SLM-NEXT: shlq (%rdx) # sched: [4:2.00] 12589 ; SLM-NEXT: shrq (%rdx) # sched: [4:2.00] 12590 ; SLM-NEXT: sarq $7, %rdi # sched: [1:1.00] 12591 ; SLM-NEXT: shlq $7, %rdi # sched: [1:1.00] 12592 ; SLM-NEXT: shrq $7, %rdi # sched: [1:1.00] 12593 ; SLM-NEXT: sarq $7, (%rdx) # sched: [4:2.00] 12594 ; SLM-NEXT: shlq $7, (%rdx) # sched: [4:2.00] 12595 ; SLM-NEXT: shrq $7, (%rdx) # sched: [4:2.00] 12596 ; SLM-NEXT: sarq %cl, %rdi # sched: [1:1.00] 12597 ; SLM-NEXT: shlq %cl, %rdi # sched: [1:1.00] 12598 ; SLM-NEXT: shrq %cl, %rdi # sched: [1:1.00] 12599 ; SLM-NEXT: sarq %cl, (%rdx) # sched: [4:2.00] 12600 ; SLM-NEXT: shlq %cl, (%rdx) # sched: [4:2.00] 12601 ; SLM-NEXT: shrq %cl, (%rdx) # sched: [4:2.00] 12602 ; SLM-NEXT: #NO_APP 12603 ; SLM-NEXT: retq # sched: [4:1.00] 12604 ; 12605 ; SANDY-LABEL: test_sar_shl_shr_64: 12606 ; SANDY: # %bb.0: 12607 ; SANDY-NEXT: #APP 12608 ; SANDY-NEXT: sarq %rdi # sched: [1:0.50] 12609 ; SANDY-NEXT: shlq %rdi # sched: [1:0.50] 12610 ; SANDY-NEXT: shrq %rdi # sched: [1:0.50] 12611 ; SANDY-NEXT: sarq (%rdx) # sched: [7:1.00] 12612 ; SANDY-NEXT: shlq (%rdx) # sched: [7:1.00] 12613 ; SANDY-NEXT: shrq (%rdx) # sched: [7:1.00] 12614 ; SANDY-NEXT: sarq $7, %rdi # sched: [1:0.50] 12615 ; SANDY-NEXT: shlq $7, %rdi # sched: [1:0.50] 12616 ; SANDY-NEXT: shrq $7, %rdi # sched: [1:0.50] 12617 ; SANDY-NEXT: sarq $7, (%rdx) # sched: [7:1.00] 12618 ; SANDY-NEXT: shlq $7, (%rdx) # sched: [7:1.00] 12619 ; SANDY-NEXT: shrq $7, (%rdx) # sched: [7:1.00] 12620 ; SANDY-NEXT: sarq %cl, %rdi # sched: [3:1.50] 12621 ; SANDY-NEXT: shlq %cl, %rdi # sched: [3:1.50] 12622 ; SANDY-NEXT: shrq %cl, %rdi # sched: [3:1.50] 12623 ; SANDY-NEXT: sarq %cl, (%rdx) # sched: [9:1.50] 12624 ; SANDY-NEXT: shlq %cl, (%rdx) # sched: [9:1.50] 12625 ; SANDY-NEXT: shrq %cl, (%rdx) # sched: [9:1.50] 12626 ; SANDY-NEXT: #NO_APP 12627 ; SANDY-NEXT: retq # sched: [1:1.00] 12628 ; 12629 ; HASWELL-LABEL: test_sar_shl_shr_64: 12630 ; HASWELL: # %bb.0: 12631 ; HASWELL-NEXT: #APP 12632 ; HASWELL-NEXT: sarq %rdi # sched: [1:0.50] 12633 ; HASWELL-NEXT: shlq %rdi # sched: [1:0.50] 12634 ; HASWELL-NEXT: shrq %rdi # sched: [1:0.50] 12635 ; HASWELL-NEXT: sarq (%rdx) # sched: [7:1.00] 12636 ; HASWELL-NEXT: shlq (%rdx) # sched: [7:1.00] 12637 ; HASWELL-NEXT: shrq (%rdx) # sched: [7:1.00] 12638 ; HASWELL-NEXT: sarq $7, %rdi # sched: [1:0.50] 12639 ; HASWELL-NEXT: shlq $7, %rdi # sched: [1:0.50] 12640 ; HASWELL-NEXT: shrq $7, %rdi # sched: [1:0.50] 12641 ; HASWELL-NEXT: sarq $7, (%rdx) # sched: [7:1.00] 12642 ; HASWELL-NEXT: shlq $7, (%rdx) # sched: [7:1.00] 12643 ; HASWELL-NEXT: shrq $7, (%rdx) # sched: [7:1.00] 12644 ; HASWELL-NEXT: sarq %cl, %rdi # sched: [3:1.00] 12645 ; HASWELL-NEXT: shlq %cl, %rdi # sched: [3:1.00] 12646 ; HASWELL-NEXT: shrq %cl, %rdi # sched: [3:1.00] 12647 ; HASWELL-NEXT: sarq %cl, (%rdx) # sched: [9:1.00] 12648 ; HASWELL-NEXT: shlq %cl, (%rdx) # sched: [9:1.00] 12649 ; HASWELL-NEXT: shrq %cl, (%rdx) # sched: [9:1.00] 12650 ; HASWELL-NEXT: #NO_APP 12651 ; HASWELL-NEXT: retq # sched: [7:1.00] 12652 ; 12653 ; BROADWELL-LABEL: test_sar_shl_shr_64: 12654 ; BROADWELL: # %bb.0: 12655 ; BROADWELL-NEXT: #APP 12656 ; BROADWELL-NEXT: sarq %rdi # sched: [1:0.50] 12657 ; BROADWELL-NEXT: shlq %rdi # sched: [1:0.50] 12658 ; BROADWELL-NEXT: shrq %rdi # sched: [1:0.50] 12659 ; BROADWELL-NEXT: sarq (%rdx) # sched: [6:1.00] 12660 ; BROADWELL-NEXT: shlq (%rdx) # sched: [6:1.00] 12661 ; BROADWELL-NEXT: shrq (%rdx) # sched: [6:1.00] 12662 ; BROADWELL-NEXT: sarq $7, %rdi # sched: [1:0.50] 12663 ; BROADWELL-NEXT: shlq $7, %rdi # sched: [1:0.50] 12664 ; BROADWELL-NEXT: shrq $7, %rdi # sched: [1:0.50] 12665 ; BROADWELL-NEXT: sarq $7, (%rdx) # sched: [6:1.00] 12666 ; BROADWELL-NEXT: shlq $7, (%rdx) # sched: [6:1.00] 12667 ; BROADWELL-NEXT: shrq $7, (%rdx) # sched: [6:1.00] 12668 ; BROADWELL-NEXT: sarq %cl, %rdi # sched: [3:1.00] 12669 ; BROADWELL-NEXT: shlq %cl, %rdi # sched: [3:1.00] 12670 ; BROADWELL-NEXT: shrq %cl, %rdi # sched: [3:1.00] 12671 ; BROADWELL-NEXT: sarq %cl, (%rdx) # sched: [8:1.00] 12672 ; BROADWELL-NEXT: shlq %cl, (%rdx) # sched: [8:1.00] 12673 ; BROADWELL-NEXT: shrq %cl, (%rdx) # sched: [8:1.00] 12674 ; BROADWELL-NEXT: #NO_APP 12675 ; BROADWELL-NEXT: retq # sched: [7:1.00] 12676 ; 12677 ; SKYLAKE-LABEL: test_sar_shl_shr_64: 12678 ; SKYLAKE: # %bb.0: 12679 ; SKYLAKE-NEXT: #APP 12680 ; SKYLAKE-NEXT: sarq %rdi # sched: [1:0.50] 12681 ; SKYLAKE-NEXT: shlq %rdi # sched: [1:0.50] 12682 ; SKYLAKE-NEXT: shrq %rdi # sched: [1:0.50] 12683 ; SKYLAKE-NEXT: sarq (%rdx) # sched: [6:1.00] 12684 ; SKYLAKE-NEXT: shlq (%rdx) # sched: [6:1.00] 12685 ; SKYLAKE-NEXT: shrq (%rdx) # sched: [6:1.00] 12686 ; SKYLAKE-NEXT: sarq $7, %rdi # sched: [1:0.50] 12687 ; SKYLAKE-NEXT: shlq $7, %rdi # sched: [1:0.50] 12688 ; SKYLAKE-NEXT: shrq $7, %rdi # sched: [1:0.50] 12689 ; SKYLAKE-NEXT: sarq $7, (%rdx) # sched: [6:1.00] 12690 ; SKYLAKE-NEXT: shlq $7, (%rdx) # sched: [6:1.00] 12691 ; SKYLAKE-NEXT: shrq $7, (%rdx) # sched: [6:1.00] 12692 ; SKYLAKE-NEXT: sarq %cl, %rdi # sched: [3:1.50] 12693 ; SKYLAKE-NEXT: shlq %cl, %rdi # sched: [3:1.50] 12694 ; SKYLAKE-NEXT: shrq %cl, %rdi # sched: [3:1.50] 12695 ; SKYLAKE-NEXT: sarq %cl, (%rdx) # sched: [8:1.50] 12696 ; SKYLAKE-NEXT: shlq %cl, (%rdx) # sched: [8:1.50] 12697 ; SKYLAKE-NEXT: shrq %cl, (%rdx) # sched: [8:1.50] 12698 ; SKYLAKE-NEXT: #NO_APP 12699 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 12700 ; 12701 ; SKX-LABEL: test_sar_shl_shr_64: 12702 ; SKX: # %bb.0: 12703 ; SKX-NEXT: #APP 12704 ; SKX-NEXT: sarq %rdi # sched: [1:0.50] 12705 ; SKX-NEXT: shlq %rdi # sched: [1:0.50] 12706 ; SKX-NEXT: shrq %rdi # sched: [1:0.50] 12707 ; SKX-NEXT: sarq (%rdx) # sched: [6:1.00] 12708 ; SKX-NEXT: shlq (%rdx) # sched: [6:1.00] 12709 ; SKX-NEXT: shrq (%rdx) # sched: [6:1.00] 12710 ; SKX-NEXT: sarq $7, %rdi # sched: [1:0.50] 12711 ; SKX-NEXT: shlq $7, %rdi # sched: [1:0.50] 12712 ; SKX-NEXT: shrq $7, %rdi # sched: [1:0.50] 12713 ; SKX-NEXT: sarq $7, (%rdx) # sched: [6:1.00] 12714 ; SKX-NEXT: shlq $7, (%rdx) # sched: [6:1.00] 12715 ; SKX-NEXT: shrq $7, (%rdx) # sched: [6:1.00] 12716 ; SKX-NEXT: sarq %cl, %rdi # sched: [3:1.50] 12717 ; SKX-NEXT: shlq %cl, %rdi # sched: [3:1.50] 12718 ; SKX-NEXT: shrq %cl, %rdi # sched: [3:1.50] 12719 ; SKX-NEXT: sarq %cl, (%rdx) # sched: [8:1.50] 12720 ; SKX-NEXT: shlq %cl, (%rdx) # sched: [8:1.50] 12721 ; SKX-NEXT: shrq %cl, (%rdx) # sched: [8:1.50] 12722 ; SKX-NEXT: #NO_APP 12723 ; SKX-NEXT: retq # sched: [7:1.00] 12724 ; 12725 ; BTVER2-LABEL: test_sar_shl_shr_64: 12726 ; BTVER2: # %bb.0: 12727 ; BTVER2-NEXT: #APP 12728 ; BTVER2-NEXT: sarq %rdi # sched: [1:0.50] 12729 ; BTVER2-NEXT: shlq %rdi # sched: [1:0.50] 12730 ; BTVER2-NEXT: shrq %rdi # sched: [1:0.50] 12731 ; BTVER2-NEXT: sarq (%rdx) # sched: [4:1.00] 12732 ; BTVER2-NEXT: shlq (%rdx) # sched: [4:1.00] 12733 ; BTVER2-NEXT: shrq (%rdx) # sched: [4:1.00] 12734 ; BTVER2-NEXT: sarq $7, %rdi # sched: [1:0.50] 12735 ; BTVER2-NEXT: shlq $7, %rdi # sched: [1:0.50] 12736 ; BTVER2-NEXT: shrq $7, %rdi # sched: [1:0.50] 12737 ; BTVER2-NEXT: sarq $7, (%rdx) # sched: [4:1.00] 12738 ; BTVER2-NEXT: shlq $7, (%rdx) # sched: [4:1.00] 12739 ; BTVER2-NEXT: shrq $7, (%rdx) # sched: [4:1.00] 12740 ; BTVER2-NEXT: sarq %cl, %rdi # sched: [1:0.50] 12741 ; BTVER2-NEXT: shlq %cl, %rdi # sched: [1:0.50] 12742 ; BTVER2-NEXT: shrq %cl, %rdi # sched: [1:0.50] 12743 ; BTVER2-NEXT: sarq %cl, (%rdx) # sched: [4:1.00] 12744 ; BTVER2-NEXT: shlq %cl, (%rdx) # sched: [4:1.00] 12745 ; BTVER2-NEXT: shrq %cl, (%rdx) # sched: [4:1.00] 12746 ; BTVER2-NEXT: #NO_APP 12747 ; BTVER2-NEXT: retq # sched: [4:1.00] 12748 ; 12749 ; ZNVER1-LABEL: test_sar_shl_shr_64: 12750 ; ZNVER1: # %bb.0: 12751 ; ZNVER1-NEXT: #APP 12752 ; ZNVER1-NEXT: sarq %rdi # sched: [1:0.25] 12753 ; ZNVER1-NEXT: shlq %rdi # sched: [1:0.25] 12754 ; ZNVER1-NEXT: shrq %rdi # sched: [1:0.25] 12755 ; ZNVER1-NEXT: sarq (%rdx) # sched: [5:0.50] 12756 ; ZNVER1-NEXT: shlq (%rdx) # sched: [5:0.50] 12757 ; ZNVER1-NEXT: shrq (%rdx) # sched: [5:0.50] 12758 ; ZNVER1-NEXT: sarq $7, %rdi # sched: [1:0.25] 12759 ; ZNVER1-NEXT: shlq $7, %rdi # sched: [1:0.25] 12760 ; ZNVER1-NEXT: shrq $7, %rdi # sched: [1:0.25] 12761 ; ZNVER1-NEXT: sarq $7, (%rdx) # sched: [5:0.50] 12762 ; ZNVER1-NEXT: shlq $7, (%rdx) # sched: [5:0.50] 12763 ; ZNVER1-NEXT: shrq $7, (%rdx) # sched: [5:0.50] 12764 ; ZNVER1-NEXT: sarq %cl, %rdi # sched: [1:0.25] 12765 ; ZNVER1-NEXT: shlq %cl, %rdi # sched: [1:0.25] 12766 ; ZNVER1-NEXT: shrq %cl, %rdi # sched: [1:0.25] 12767 ; ZNVER1-NEXT: sarq %cl, (%rdx) # sched: [5:1.00] 12768 ; ZNVER1-NEXT: shlq %cl, (%rdx) # sched: [5:1.00] 12769 ; ZNVER1-NEXT: shrq %cl, (%rdx) # sched: [5:1.00] 12770 ; ZNVER1-NEXT: #NO_APP 12771 ; ZNVER1-NEXT: retq # sched: [1:0.50] 12772 call void asm sideeffect "sarq $0 \0A\09 shlq $0 \0A\09 shrq $0 \0A\09 sarq $2 \0A\09 shlq $2 \0A\09 shrq $2 \0A\09 sarq $3, $0 \0A\09 shlq $3, $0 \0A\09 shrq $3, $0 \0A\09 sarq $3, $2 \0A\09 shlq $3, $2 \0A\09 shrq $3, $2 \0A\09 sarq %CL, $0 \0A\09 shlq %CL, $0 \0A\09 shrq %CL, $0 \0A\09 sarq %CL, $2 \0A\09 shlq %CL, $2 \0A\09 shrq %CL, $2", "r,r,*m,i"(i64 %a0, i64 %a1, i64 *%a2, i8 7) 12773 ret void 12774 } 12775 12776 define void @test_sbb_8(i8 %a0, i8* %a1, i8 %a2) optsize { 12777 ; GENERIC-LABEL: test_sbb_8: 12778 ; GENERIC: # %bb.0: 12779 ; GENERIC-NEXT: #APP 12780 ; GENERIC-NEXT: sbbb $7, %al # sched: [2:0.67] 12781 ; GENERIC-NEXT: sbbb $7, %dil # sched: [2:0.67] 12782 ; GENERIC-NEXT: sbbb $7, (%rsi) # sched: [9:1.00] 12783 ; GENERIC-NEXT: sbbb %dl, %dil # sched: [2:0.67] 12784 ; GENERIC-NEXT: sbbb %dil, (%rsi) # sched: [9:1.00] 12785 ; GENERIC-NEXT: sbbb (%rsi), %dil # sched: [7:0.67] 12786 ; GENERIC-NEXT: #NO_APP 12787 ; GENERIC-NEXT: retq # sched: [1:1.00] 12788 ; 12789 ; ATOM-LABEL: test_sbb_8: 12790 ; ATOM: # %bb.0: 12791 ; ATOM-NEXT: #APP 12792 ; ATOM-NEXT: sbbb $7, %al # sched: [1:0.50] 12793 ; ATOM-NEXT: sbbb $7, %dil # sched: [1:0.50] 12794 ; ATOM-NEXT: sbbb $7, (%rsi) # sched: [1:1.00] 12795 ; ATOM-NEXT: sbbb %dl, %dil # sched: [1:0.50] 12796 ; ATOM-NEXT: sbbb %dil, (%rsi) # sched: [1:1.00] 12797 ; ATOM-NEXT: sbbb (%rsi), %dil # sched: [1:1.00] 12798 ; ATOM-NEXT: #NO_APP 12799 ; ATOM-NEXT: retq # sched: [79:39.50] 12800 ; 12801 ; SLM-LABEL: test_sbb_8: 12802 ; SLM: # %bb.0: 12803 ; SLM-NEXT: #APP 12804 ; SLM-NEXT: sbbb $7, %al # sched: [1:0.50] 12805 ; SLM-NEXT: sbbb $7, %dil # sched: [1:0.50] 12806 ; SLM-NEXT: sbbb $7, (%rsi) # sched: [5:2.00] 12807 ; SLM-NEXT: sbbb %dl, %dil # sched: [1:0.50] 12808 ; SLM-NEXT: sbbb %dil, (%rsi) # sched: [5:2.00] 12809 ; SLM-NEXT: sbbb (%rsi), %dil # sched: [4:1.00] 12810 ; SLM-NEXT: #NO_APP 12811 ; SLM-NEXT: retq # sched: [4:1.00] 12812 ; 12813 ; SANDY-LABEL: test_sbb_8: 12814 ; SANDY: # %bb.0: 12815 ; SANDY-NEXT: #APP 12816 ; SANDY-NEXT: sbbb $7, %al # sched: [2:0.67] 12817 ; SANDY-NEXT: sbbb $7, %dil # sched: [2:0.67] 12818 ; SANDY-NEXT: sbbb $7, (%rsi) # sched: [9:1.00] 12819 ; SANDY-NEXT: sbbb %dl, %dil # sched: [2:0.67] 12820 ; SANDY-NEXT: sbbb %dil, (%rsi) # sched: [9:1.00] 12821 ; SANDY-NEXT: sbbb (%rsi), %dil # sched: [7:0.67] 12822 ; SANDY-NEXT: #NO_APP 12823 ; SANDY-NEXT: retq # sched: [1:1.00] 12824 ; 12825 ; HASWELL-LABEL: test_sbb_8: 12826 ; HASWELL: # %bb.0: 12827 ; HASWELL-NEXT: #APP 12828 ; HASWELL-NEXT: sbbb $7, %al # sched: [2:0.50] 12829 ; HASWELL-NEXT: sbbb $7, %dil # sched: [2:0.50] 12830 ; HASWELL-NEXT: sbbb $7, (%rsi) # sched: [9:1.00] 12831 ; HASWELL-NEXT: sbbb %dl, %dil # sched: [2:0.50] 12832 ; HASWELL-NEXT: sbbb %dil, (%rsi) # sched: [9:1.00] 12833 ; HASWELL-NEXT: sbbb (%rsi), %dil # sched: [7:0.50] 12834 ; HASWELL-NEXT: #NO_APP 12835 ; HASWELL-NEXT: retq # sched: [7:1.00] 12836 ; 12837 ; BROADWELL-LABEL: test_sbb_8: 12838 ; BROADWELL: # %bb.0: 12839 ; BROADWELL-NEXT: #APP 12840 ; BROADWELL-NEXT: sbbb $7, %al # sched: [2:0.50] 12841 ; BROADWELL-NEXT: sbbb $7, %dil # sched: [2:0.50] 12842 ; BROADWELL-NEXT: sbbb $7, (%rsi) # sched: [8:1.00] 12843 ; BROADWELL-NEXT: sbbb %dl, %dil # sched: [1:0.50] 12844 ; BROADWELL-NEXT: sbbb %dil, (%rsi) # sched: [8:1.00] 12845 ; BROADWELL-NEXT: sbbb (%rsi), %dil # sched: [6:0.50] 12846 ; BROADWELL-NEXT: #NO_APP 12847 ; BROADWELL-NEXT: retq # sched: [7:1.00] 12848 ; 12849 ; SKYLAKE-LABEL: test_sbb_8: 12850 ; SKYLAKE: # %bb.0: 12851 ; SKYLAKE-NEXT: #APP 12852 ; SKYLAKE-NEXT: sbbb $7, %al # sched: [2:0.50] 12853 ; SKYLAKE-NEXT: sbbb $7, %dil # sched: [2:0.50] 12854 ; SKYLAKE-NEXT: sbbb $7, (%rsi) # sched: [8:1.00] 12855 ; SKYLAKE-NEXT: sbbb %dl, %dil # sched: [1:0.50] 12856 ; SKYLAKE-NEXT: sbbb %dil, (%rsi) # sched: [8:1.00] 12857 ; SKYLAKE-NEXT: sbbb (%rsi), %dil # sched: [6:0.50] 12858 ; SKYLAKE-NEXT: #NO_APP 12859 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 12860 ; 12861 ; SKX-LABEL: test_sbb_8: 12862 ; SKX: # %bb.0: 12863 ; SKX-NEXT: #APP 12864 ; SKX-NEXT: sbbb $7, %al # sched: [2:0.50] 12865 ; SKX-NEXT: sbbb $7, %dil # sched: [2:0.50] 12866 ; SKX-NEXT: sbbb $7, (%rsi) # sched: [8:1.00] 12867 ; SKX-NEXT: sbbb %dl, %dil # sched: [1:0.50] 12868 ; SKX-NEXT: sbbb %dil, (%rsi) # sched: [8:1.00] 12869 ; SKX-NEXT: sbbb (%rsi), %dil # sched: [6:0.50] 12870 ; SKX-NEXT: #NO_APP 12871 ; SKX-NEXT: retq # sched: [7:1.00] 12872 ; 12873 ; BTVER2-LABEL: test_sbb_8: 12874 ; BTVER2: # %bb.0: 12875 ; BTVER2-NEXT: #APP 12876 ; BTVER2-NEXT: sbbb $7, %al # sched: [1:1.00] 12877 ; BTVER2-NEXT: sbbb $7, %dil # sched: [1:1.00] 12878 ; BTVER2-NEXT: sbbb $7, (%rsi) # sched: [5:1.00] 12879 ; BTVER2-NEXT: sbbb %dl, %dil # sched: [1:1.00] 12880 ; BTVER2-NEXT: sbbb %dil, (%rsi) # sched: [5:1.00] 12881 ; BTVER2-NEXT: sbbb (%rsi), %dil # sched: [4:1.00] 12882 ; BTVER2-NEXT: #NO_APP 12883 ; BTVER2-NEXT: retq # sched: [4:1.00] 12884 ; 12885 ; ZNVER1-LABEL: test_sbb_8: 12886 ; ZNVER1: # %bb.0: 12887 ; ZNVER1-NEXT: #APP 12888 ; ZNVER1-NEXT: sbbb $7, %al # sched: [1:0.25] 12889 ; ZNVER1-NEXT: sbbb $7, %dil # sched: [1:0.25] 12890 ; ZNVER1-NEXT: sbbb $7, (%rsi) # sched: [5:0.50] 12891 ; ZNVER1-NEXT: sbbb %dl, %dil # sched: [1:0.25] 12892 ; ZNVER1-NEXT: sbbb %dil, (%rsi) # sched: [5:0.50] 12893 ; ZNVER1-NEXT: sbbb (%rsi), %dil # sched: [5:0.50] 12894 ; ZNVER1-NEXT: #NO_APP 12895 ; ZNVER1-NEXT: retq # sched: [1:0.50] 12896 tail call void asm "sbbb $3, %AL \0A\09 sbbb $3, $0 \0A\09 sbbb $3, $2 \0A\09 sbbb $1, $0 \0A\09 sbbb $0, $2 \0A\09 sbbb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 12897 ret void 12898 } 12899 define void @test_sbb_16(i16 %a0, i16* %a1, i16 %a2) optsize { 12900 ; GENERIC-LABEL: test_sbb_16: 12901 ; GENERIC: # %bb.0: 12902 ; GENERIC-NEXT: #APP 12903 ; GENERIC-NEXT: sbbw $511, %ax # imm = 0x1FF 12904 ; GENERIC-NEXT: # sched: [2:0.67] 12905 ; GENERIC-NEXT: sbbw $511, %di # imm = 0x1FF 12906 ; GENERIC-NEXT: # sched: [2:0.67] 12907 ; GENERIC-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12908 ; GENERIC-NEXT: # sched: [9:1.00] 12909 ; GENERIC-NEXT: sbbw $7, %di # sched: [2:0.67] 12910 ; GENERIC-NEXT: sbbw $7, (%rsi) # sched: [9:1.00] 12911 ; GENERIC-NEXT: sbbw %dx, %di # sched: [2:0.67] 12912 ; GENERIC-NEXT: sbbw %di, (%rsi) # sched: [9:1.00] 12913 ; GENERIC-NEXT: sbbw (%rsi), %di # sched: [7:0.67] 12914 ; GENERIC-NEXT: #NO_APP 12915 ; GENERIC-NEXT: retq # sched: [1:1.00] 12916 ; 12917 ; ATOM-LABEL: test_sbb_16: 12918 ; ATOM: # %bb.0: 12919 ; ATOM-NEXT: #APP 12920 ; ATOM-NEXT: sbbw $511, %ax # imm = 0x1FF 12921 ; ATOM-NEXT: # sched: [1:0.50] 12922 ; ATOM-NEXT: sbbw $511, %di # imm = 0x1FF 12923 ; ATOM-NEXT: # sched: [1:0.50] 12924 ; ATOM-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12925 ; ATOM-NEXT: # sched: [1:1.00] 12926 ; ATOM-NEXT: sbbw $7, %di # sched: [1:0.50] 12927 ; ATOM-NEXT: sbbw $7, (%rsi) # sched: [1:1.00] 12928 ; ATOM-NEXT: sbbw %dx, %di # sched: [1:0.50] 12929 ; ATOM-NEXT: sbbw %di, (%rsi) # sched: [1:1.00] 12930 ; ATOM-NEXT: sbbw (%rsi), %di # sched: [1:1.00] 12931 ; ATOM-NEXT: #NO_APP 12932 ; ATOM-NEXT: retq # sched: [79:39.50] 12933 ; 12934 ; SLM-LABEL: test_sbb_16: 12935 ; SLM: # %bb.0: 12936 ; SLM-NEXT: #APP 12937 ; SLM-NEXT: sbbw $511, %ax # imm = 0x1FF 12938 ; SLM-NEXT: # sched: [1:0.50] 12939 ; SLM-NEXT: sbbw $511, %di # imm = 0x1FF 12940 ; SLM-NEXT: # sched: [1:0.50] 12941 ; SLM-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12942 ; SLM-NEXT: # sched: [5:2.00] 12943 ; SLM-NEXT: sbbw $7, %di # sched: [1:0.50] 12944 ; SLM-NEXT: sbbw $7, (%rsi) # sched: [5:2.00] 12945 ; SLM-NEXT: sbbw %dx, %di # sched: [1:0.50] 12946 ; SLM-NEXT: sbbw %di, (%rsi) # sched: [5:2.00] 12947 ; SLM-NEXT: sbbw (%rsi), %di # sched: [4:1.00] 12948 ; SLM-NEXT: #NO_APP 12949 ; SLM-NEXT: retq # sched: [4:1.00] 12950 ; 12951 ; SANDY-LABEL: test_sbb_16: 12952 ; SANDY: # %bb.0: 12953 ; SANDY-NEXT: #APP 12954 ; SANDY-NEXT: sbbw $511, %ax # imm = 0x1FF 12955 ; SANDY-NEXT: # sched: [2:0.67] 12956 ; SANDY-NEXT: sbbw $511, %di # imm = 0x1FF 12957 ; SANDY-NEXT: # sched: [2:0.67] 12958 ; SANDY-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12959 ; SANDY-NEXT: # sched: [9:1.00] 12960 ; SANDY-NEXT: sbbw $7, %di # sched: [2:0.67] 12961 ; SANDY-NEXT: sbbw $7, (%rsi) # sched: [9:1.00] 12962 ; SANDY-NEXT: sbbw %dx, %di # sched: [2:0.67] 12963 ; SANDY-NEXT: sbbw %di, (%rsi) # sched: [9:1.00] 12964 ; SANDY-NEXT: sbbw (%rsi), %di # sched: [7:0.67] 12965 ; SANDY-NEXT: #NO_APP 12966 ; SANDY-NEXT: retq # sched: [1:1.00] 12967 ; 12968 ; HASWELL-LABEL: test_sbb_16: 12969 ; HASWELL: # %bb.0: 12970 ; HASWELL-NEXT: #APP 12971 ; HASWELL-NEXT: sbbw $511, %ax # imm = 0x1FF 12972 ; HASWELL-NEXT: # sched: [2:0.50] 12973 ; HASWELL-NEXT: sbbw $511, %di # imm = 0x1FF 12974 ; HASWELL-NEXT: # sched: [2:0.50] 12975 ; HASWELL-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12976 ; HASWELL-NEXT: # sched: [9:1.00] 12977 ; HASWELL-NEXT: sbbw $7, %di # sched: [2:0.50] 12978 ; HASWELL-NEXT: sbbw $7, (%rsi) # sched: [9:1.00] 12979 ; HASWELL-NEXT: sbbw %dx, %di # sched: [2:0.50] 12980 ; HASWELL-NEXT: sbbw %di, (%rsi) # sched: [9:1.00] 12981 ; HASWELL-NEXT: sbbw (%rsi), %di # sched: [7:0.50] 12982 ; HASWELL-NEXT: #NO_APP 12983 ; HASWELL-NEXT: retq # sched: [7:1.00] 12984 ; 12985 ; BROADWELL-LABEL: test_sbb_16: 12986 ; BROADWELL: # %bb.0: 12987 ; BROADWELL-NEXT: #APP 12988 ; BROADWELL-NEXT: sbbw $511, %ax # imm = 0x1FF 12989 ; BROADWELL-NEXT: # sched: [1:0.50] 12990 ; BROADWELL-NEXT: sbbw $511, %di # imm = 0x1FF 12991 ; BROADWELL-NEXT: # sched: [1:0.50] 12992 ; BROADWELL-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12993 ; BROADWELL-NEXT: # sched: [8:1.00] 12994 ; BROADWELL-NEXT: sbbw $7, %di # sched: [1:0.50] 12995 ; BROADWELL-NEXT: sbbw $7, (%rsi) # sched: [8:1.00] 12996 ; BROADWELL-NEXT: sbbw %dx, %di # sched: [1:0.50] 12997 ; BROADWELL-NEXT: sbbw %di, (%rsi) # sched: [8:1.00] 12998 ; BROADWELL-NEXT: sbbw (%rsi), %di # sched: [6:0.50] 12999 ; BROADWELL-NEXT: #NO_APP 13000 ; BROADWELL-NEXT: retq # sched: [7:1.00] 13001 ; 13002 ; SKYLAKE-LABEL: test_sbb_16: 13003 ; SKYLAKE: # %bb.0: 13004 ; SKYLAKE-NEXT: #APP 13005 ; SKYLAKE-NEXT: sbbw $511, %ax # imm = 0x1FF 13006 ; SKYLAKE-NEXT: # sched: [1:0.50] 13007 ; SKYLAKE-NEXT: sbbw $511, %di # imm = 0x1FF 13008 ; SKYLAKE-NEXT: # sched: [1:0.50] 13009 ; SKYLAKE-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 13010 ; SKYLAKE-NEXT: # sched: [8:1.00] 13011 ; SKYLAKE-NEXT: sbbw $7, %di # sched: [1:0.50] 13012 ; SKYLAKE-NEXT: sbbw $7, (%rsi) # sched: [8:1.00] 13013 ; SKYLAKE-NEXT: sbbw %dx, %di # sched: [1:0.50] 13014 ; SKYLAKE-NEXT: sbbw %di, (%rsi) # sched: [8:1.00] 13015 ; SKYLAKE-NEXT: sbbw (%rsi), %di # sched: [6:0.50] 13016 ; SKYLAKE-NEXT: #NO_APP 13017 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 13018 ; 13019 ; SKX-LABEL: test_sbb_16: 13020 ; SKX: # %bb.0: 13021 ; SKX-NEXT: #APP 13022 ; SKX-NEXT: sbbw $511, %ax # imm = 0x1FF 13023 ; SKX-NEXT: # sched: [1:0.50] 13024 ; SKX-NEXT: sbbw $511, %di # imm = 0x1FF 13025 ; SKX-NEXT: # sched: [1:0.50] 13026 ; SKX-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 13027 ; SKX-NEXT: # sched: [8:1.00] 13028 ; SKX-NEXT: sbbw $7, %di # sched: [1:0.50] 13029 ; SKX-NEXT: sbbw $7, (%rsi) # sched: [8:1.00] 13030 ; SKX-NEXT: sbbw %dx, %di # sched: [1:0.50] 13031 ; SKX-NEXT: sbbw %di, (%rsi) # sched: [8:1.00] 13032 ; SKX-NEXT: sbbw (%rsi), %di # sched: [6:0.50] 13033 ; SKX-NEXT: #NO_APP 13034 ; SKX-NEXT: retq # sched: [7:1.00] 13035 ; 13036 ; BTVER2-LABEL: test_sbb_16: 13037 ; BTVER2: # %bb.0: 13038 ; BTVER2-NEXT: #APP 13039 ; BTVER2-NEXT: sbbw $511, %ax # imm = 0x1FF 13040 ; BTVER2-NEXT: # sched: [1:1.00] 13041 ; BTVER2-NEXT: sbbw $511, %di # imm = 0x1FF 13042 ; BTVER2-NEXT: # sched: [1:1.00] 13043 ; BTVER2-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 13044 ; BTVER2-NEXT: # sched: [5:1.00] 13045 ; BTVER2-NEXT: sbbw $7, %di # sched: [1:1.00] 13046 ; BTVER2-NEXT: sbbw $7, (%rsi) # sched: [5:1.00] 13047 ; BTVER2-NEXT: sbbw %dx, %di # sched: [1:1.00] 13048 ; BTVER2-NEXT: sbbw %di, (%rsi) # sched: [5:1.00] 13049 ; BTVER2-NEXT: sbbw (%rsi), %di # sched: [4:1.00] 13050 ; BTVER2-NEXT: #NO_APP 13051 ; BTVER2-NEXT: retq # sched: [4:1.00] 13052 ; 13053 ; ZNVER1-LABEL: test_sbb_16: 13054 ; ZNVER1: # %bb.0: 13055 ; ZNVER1-NEXT: #APP 13056 ; ZNVER1-NEXT: sbbw $511, %ax # imm = 0x1FF 13057 ; ZNVER1-NEXT: # sched: [1:0.25] 13058 ; ZNVER1-NEXT: sbbw $511, %di # imm = 0x1FF 13059 ; ZNVER1-NEXT: # sched: [1:0.25] 13060 ; ZNVER1-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 13061 ; ZNVER1-NEXT: # sched: [5:0.50] 13062 ; ZNVER1-NEXT: sbbw $7, %di # sched: [1:0.25] 13063 ; ZNVER1-NEXT: sbbw $7, (%rsi) # sched: [5:0.50] 13064 ; ZNVER1-NEXT: sbbw %dx, %di # sched: [1:0.25] 13065 ; ZNVER1-NEXT: sbbw %di, (%rsi) # sched: [5:0.50] 13066 ; ZNVER1-NEXT: sbbw (%rsi), %di # sched: [5:0.50] 13067 ; ZNVER1-NEXT: #NO_APP 13068 ; ZNVER1-NEXT: retq # sched: [1:0.50] 13069 tail call void asm "sbbw $3, %AX \0A\09 sbbw $3, $0 \0A\09 sbbw $3, $2 \0A\09 sbbw $4, $0 \0A\09 sbbw $4, $2 \0A\09 sbbw $1, $0 \0A\09 sbbw $0, $2 \0A\09 sbbw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 13070 ret void 13071 } 13072 define void @test_sbb_32(i32 %a0, i32* %a1, i32 %a2) optsize { 13073 ; GENERIC-LABEL: test_sbb_32: 13074 ; GENERIC: # %bb.0: 13075 ; GENERIC-NEXT: #APP 13076 ; GENERIC-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13077 ; GENERIC-NEXT: # sched: [2:0.67] 13078 ; GENERIC-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13079 ; GENERIC-NEXT: # sched: [2:0.67] 13080 ; GENERIC-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13081 ; GENERIC-NEXT: # sched: [9:1.00] 13082 ; GENERIC-NEXT: sbbl $7, %edi # sched: [2:0.67] 13083 ; GENERIC-NEXT: sbbl $7, (%rsi) # sched: [9:1.00] 13084 ; GENERIC-NEXT: sbbl %edx, %edi # sched: [2:0.67] 13085 ; GENERIC-NEXT: sbbl %edi, (%rsi) # sched: [9:1.00] 13086 ; GENERIC-NEXT: sbbl (%rsi), %edi # sched: [7:0.67] 13087 ; GENERIC-NEXT: #NO_APP 13088 ; GENERIC-NEXT: retq # sched: [1:1.00] 13089 ; 13090 ; ATOM-LABEL: test_sbb_32: 13091 ; ATOM: # %bb.0: 13092 ; ATOM-NEXT: #APP 13093 ; ATOM-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13094 ; ATOM-NEXT: # sched: [1:0.50] 13095 ; ATOM-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13096 ; ATOM-NEXT: # sched: [1:0.50] 13097 ; ATOM-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13098 ; ATOM-NEXT: # sched: [1:1.00] 13099 ; ATOM-NEXT: sbbl $7, %edi # sched: [1:0.50] 13100 ; ATOM-NEXT: sbbl $7, (%rsi) # sched: [1:1.00] 13101 ; ATOM-NEXT: sbbl %edx, %edi # sched: [1:0.50] 13102 ; ATOM-NEXT: sbbl %edi, (%rsi) # sched: [1:1.00] 13103 ; ATOM-NEXT: sbbl (%rsi), %edi # sched: [1:1.00] 13104 ; ATOM-NEXT: #NO_APP 13105 ; ATOM-NEXT: retq # sched: [79:39.50] 13106 ; 13107 ; SLM-LABEL: test_sbb_32: 13108 ; SLM: # %bb.0: 13109 ; SLM-NEXT: #APP 13110 ; SLM-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13111 ; SLM-NEXT: # sched: [1:0.50] 13112 ; SLM-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13113 ; SLM-NEXT: # sched: [1:0.50] 13114 ; SLM-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13115 ; SLM-NEXT: # sched: [5:2.00] 13116 ; SLM-NEXT: sbbl $7, %edi # sched: [1:0.50] 13117 ; SLM-NEXT: sbbl $7, (%rsi) # sched: [5:2.00] 13118 ; SLM-NEXT: sbbl %edx, %edi # sched: [1:0.50] 13119 ; SLM-NEXT: sbbl %edi, (%rsi) # sched: [5:2.00] 13120 ; SLM-NEXT: sbbl (%rsi), %edi # sched: [4:1.00] 13121 ; SLM-NEXT: #NO_APP 13122 ; SLM-NEXT: retq # sched: [4:1.00] 13123 ; 13124 ; SANDY-LABEL: test_sbb_32: 13125 ; SANDY: # %bb.0: 13126 ; SANDY-NEXT: #APP 13127 ; SANDY-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13128 ; SANDY-NEXT: # sched: [2:0.67] 13129 ; SANDY-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13130 ; SANDY-NEXT: # sched: [2:0.67] 13131 ; SANDY-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13132 ; SANDY-NEXT: # sched: [9:1.00] 13133 ; SANDY-NEXT: sbbl $7, %edi # sched: [2:0.67] 13134 ; SANDY-NEXT: sbbl $7, (%rsi) # sched: [9:1.00] 13135 ; SANDY-NEXT: sbbl %edx, %edi # sched: [2:0.67] 13136 ; SANDY-NEXT: sbbl %edi, (%rsi) # sched: [9:1.00] 13137 ; SANDY-NEXT: sbbl (%rsi), %edi # sched: [7:0.67] 13138 ; SANDY-NEXT: #NO_APP 13139 ; SANDY-NEXT: retq # sched: [1:1.00] 13140 ; 13141 ; HASWELL-LABEL: test_sbb_32: 13142 ; HASWELL: # %bb.0: 13143 ; HASWELL-NEXT: #APP 13144 ; HASWELL-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13145 ; HASWELL-NEXT: # sched: [2:0.50] 13146 ; HASWELL-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13147 ; HASWELL-NEXT: # sched: [2:0.50] 13148 ; HASWELL-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13149 ; HASWELL-NEXT: # sched: [9:1.00] 13150 ; HASWELL-NEXT: sbbl $7, %edi # sched: [2:0.50] 13151 ; HASWELL-NEXT: sbbl $7, (%rsi) # sched: [9:1.00] 13152 ; HASWELL-NEXT: sbbl %edx, %edi # sched: [2:0.50] 13153 ; HASWELL-NEXT: sbbl %edi, (%rsi) # sched: [9:1.00] 13154 ; HASWELL-NEXT: sbbl (%rsi), %edi # sched: [7:0.50] 13155 ; HASWELL-NEXT: #NO_APP 13156 ; HASWELL-NEXT: retq # sched: [7:1.00] 13157 ; 13158 ; BROADWELL-LABEL: test_sbb_32: 13159 ; BROADWELL: # %bb.0: 13160 ; BROADWELL-NEXT: #APP 13161 ; BROADWELL-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13162 ; BROADWELL-NEXT: # sched: [1:0.50] 13163 ; BROADWELL-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13164 ; BROADWELL-NEXT: # sched: [1:0.50] 13165 ; BROADWELL-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13166 ; BROADWELL-NEXT: # sched: [8:1.00] 13167 ; BROADWELL-NEXT: sbbl $7, %edi # sched: [1:0.50] 13168 ; BROADWELL-NEXT: sbbl $7, (%rsi) # sched: [8:1.00] 13169 ; BROADWELL-NEXT: sbbl %edx, %edi # sched: [1:0.50] 13170 ; BROADWELL-NEXT: sbbl %edi, (%rsi) # sched: [8:1.00] 13171 ; BROADWELL-NEXT: sbbl (%rsi), %edi # sched: [6:0.50] 13172 ; BROADWELL-NEXT: #NO_APP 13173 ; BROADWELL-NEXT: retq # sched: [7:1.00] 13174 ; 13175 ; SKYLAKE-LABEL: test_sbb_32: 13176 ; SKYLAKE: # %bb.0: 13177 ; SKYLAKE-NEXT: #APP 13178 ; SKYLAKE-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13179 ; SKYLAKE-NEXT: # sched: [1:0.50] 13180 ; SKYLAKE-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13181 ; SKYLAKE-NEXT: # sched: [1:0.50] 13182 ; SKYLAKE-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13183 ; SKYLAKE-NEXT: # sched: [8:1.00] 13184 ; SKYLAKE-NEXT: sbbl $7, %edi # sched: [1:0.50] 13185 ; SKYLAKE-NEXT: sbbl $7, (%rsi) # sched: [8:1.00] 13186 ; SKYLAKE-NEXT: sbbl %edx, %edi # sched: [1:0.50] 13187 ; SKYLAKE-NEXT: sbbl %edi, (%rsi) # sched: [8:1.00] 13188 ; SKYLAKE-NEXT: sbbl (%rsi), %edi # sched: [6:0.50] 13189 ; SKYLAKE-NEXT: #NO_APP 13190 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 13191 ; 13192 ; SKX-LABEL: test_sbb_32: 13193 ; SKX: # %bb.0: 13194 ; SKX-NEXT: #APP 13195 ; SKX-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13196 ; SKX-NEXT: # sched: [1:0.50] 13197 ; SKX-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13198 ; SKX-NEXT: # sched: [1:0.50] 13199 ; SKX-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13200 ; SKX-NEXT: # sched: [8:1.00] 13201 ; SKX-NEXT: sbbl $7, %edi # sched: [1:0.50] 13202 ; SKX-NEXT: sbbl $7, (%rsi) # sched: [8:1.00] 13203 ; SKX-NEXT: sbbl %edx, %edi # sched: [1:0.50] 13204 ; SKX-NEXT: sbbl %edi, (%rsi) # sched: [8:1.00] 13205 ; SKX-NEXT: sbbl (%rsi), %edi # sched: [6:0.50] 13206 ; SKX-NEXT: #NO_APP 13207 ; SKX-NEXT: retq # sched: [7:1.00] 13208 ; 13209 ; BTVER2-LABEL: test_sbb_32: 13210 ; BTVER2: # %bb.0: 13211 ; BTVER2-NEXT: #APP 13212 ; BTVER2-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13213 ; BTVER2-NEXT: # sched: [1:1.00] 13214 ; BTVER2-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13215 ; BTVER2-NEXT: # sched: [1:1.00] 13216 ; BTVER2-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13217 ; BTVER2-NEXT: # sched: [5:1.00] 13218 ; BTVER2-NEXT: sbbl $7, %edi # sched: [1:1.00] 13219 ; BTVER2-NEXT: sbbl $7, (%rsi) # sched: [5:1.00] 13220 ; BTVER2-NEXT: sbbl %edx, %edi # sched: [1:1.00] 13221 ; BTVER2-NEXT: sbbl %edi, (%rsi) # sched: [5:1.00] 13222 ; BTVER2-NEXT: sbbl (%rsi), %edi # sched: [4:1.00] 13223 ; BTVER2-NEXT: #NO_APP 13224 ; BTVER2-NEXT: retq # sched: [4:1.00] 13225 ; 13226 ; ZNVER1-LABEL: test_sbb_32: 13227 ; ZNVER1: # %bb.0: 13228 ; ZNVER1-NEXT: #APP 13229 ; ZNVER1-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13230 ; ZNVER1-NEXT: # sched: [1:0.25] 13231 ; ZNVER1-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13232 ; ZNVER1-NEXT: # sched: [1:0.25] 13233 ; ZNVER1-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13234 ; ZNVER1-NEXT: # sched: [5:0.50] 13235 ; ZNVER1-NEXT: sbbl $7, %edi # sched: [1:0.25] 13236 ; ZNVER1-NEXT: sbbl $7, (%rsi) # sched: [5:0.50] 13237 ; ZNVER1-NEXT: sbbl %edx, %edi # sched: [1:0.25] 13238 ; ZNVER1-NEXT: sbbl %edi, (%rsi) # sched: [5:0.50] 13239 ; ZNVER1-NEXT: sbbl (%rsi), %edi # sched: [5:0.50] 13240 ; ZNVER1-NEXT: #NO_APP 13241 ; ZNVER1-NEXT: retq # sched: [1:0.50] 13242 tail call void asm "sbbl $3, %EAX \0A\09 sbbl $3, $0 \0A\09 sbbl $3, $2 \0A\09 sbbl $4, $0 \0A\09 sbbl $4, $2 \0A\09 sbbl $1, $0 \0A\09 sbbl $0, $2 \0A\09 sbbl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 13243 ret void 13244 } 13245 define void @test_sbb_64(i64 %a0, i64* %a1, i64 %a2) optsize { 13246 ; GENERIC-LABEL: test_sbb_64: 13247 ; GENERIC: # %bb.0: 13248 ; GENERIC-NEXT: #APP 13249 ; GENERIC-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13250 ; GENERIC-NEXT: # sched: [2:0.67] 13251 ; GENERIC-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13252 ; GENERIC-NEXT: # sched: [2:0.67] 13253 ; GENERIC-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13254 ; GENERIC-NEXT: # sched: [9:1.00] 13255 ; GENERIC-NEXT: sbbq $7, %rdi # sched: [2:0.67] 13256 ; GENERIC-NEXT: sbbq $7, (%rsi) # sched: [9:1.00] 13257 ; GENERIC-NEXT: sbbq %rdx, %rdi # sched: [2:0.67] 13258 ; GENERIC-NEXT: sbbq %rdi, (%rsi) # sched: [9:1.00] 13259 ; GENERIC-NEXT: sbbq (%rsi), %rdi # sched: [7:0.67] 13260 ; GENERIC-NEXT: #NO_APP 13261 ; GENERIC-NEXT: retq # sched: [1:1.00] 13262 ; 13263 ; ATOM-LABEL: test_sbb_64: 13264 ; ATOM: # %bb.0: 13265 ; ATOM-NEXT: #APP 13266 ; ATOM-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13267 ; ATOM-NEXT: # sched: [1:0.50] 13268 ; ATOM-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13269 ; ATOM-NEXT: # sched: [1:0.50] 13270 ; ATOM-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13271 ; ATOM-NEXT: # sched: [1:1.00] 13272 ; ATOM-NEXT: sbbq $7, %rdi # sched: [1:0.50] 13273 ; ATOM-NEXT: sbbq $7, (%rsi) # sched: [1:1.00] 13274 ; ATOM-NEXT: sbbq %rdx, %rdi # sched: [1:0.50] 13275 ; ATOM-NEXT: sbbq %rdi, (%rsi) # sched: [1:1.00] 13276 ; ATOM-NEXT: sbbq (%rsi), %rdi # sched: [1:1.00] 13277 ; ATOM-NEXT: #NO_APP 13278 ; ATOM-NEXT: retq # sched: [79:39.50] 13279 ; 13280 ; SLM-LABEL: test_sbb_64: 13281 ; SLM: # %bb.0: 13282 ; SLM-NEXT: #APP 13283 ; SLM-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13284 ; SLM-NEXT: # sched: [1:0.50] 13285 ; SLM-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13286 ; SLM-NEXT: # sched: [1:0.50] 13287 ; SLM-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13288 ; SLM-NEXT: # sched: [5:2.00] 13289 ; SLM-NEXT: sbbq $7, %rdi # sched: [1:0.50] 13290 ; SLM-NEXT: sbbq $7, (%rsi) # sched: [5:2.00] 13291 ; SLM-NEXT: sbbq %rdx, %rdi # sched: [1:0.50] 13292 ; SLM-NEXT: sbbq %rdi, (%rsi) # sched: [5:2.00] 13293 ; SLM-NEXT: sbbq (%rsi), %rdi # sched: [4:1.00] 13294 ; SLM-NEXT: #NO_APP 13295 ; SLM-NEXT: retq # sched: [4:1.00] 13296 ; 13297 ; SANDY-LABEL: test_sbb_64: 13298 ; SANDY: # %bb.0: 13299 ; SANDY-NEXT: #APP 13300 ; SANDY-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13301 ; SANDY-NEXT: # sched: [2:0.67] 13302 ; SANDY-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13303 ; SANDY-NEXT: # sched: [2:0.67] 13304 ; SANDY-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13305 ; SANDY-NEXT: # sched: [9:1.00] 13306 ; SANDY-NEXT: sbbq $7, %rdi # sched: [2:0.67] 13307 ; SANDY-NEXT: sbbq $7, (%rsi) # sched: [9:1.00] 13308 ; SANDY-NEXT: sbbq %rdx, %rdi # sched: [2:0.67] 13309 ; SANDY-NEXT: sbbq %rdi, (%rsi) # sched: [9:1.00] 13310 ; SANDY-NEXT: sbbq (%rsi), %rdi # sched: [7:0.67] 13311 ; SANDY-NEXT: #NO_APP 13312 ; SANDY-NEXT: retq # sched: [1:1.00] 13313 ; 13314 ; HASWELL-LABEL: test_sbb_64: 13315 ; HASWELL: # %bb.0: 13316 ; HASWELL-NEXT: #APP 13317 ; HASWELL-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13318 ; HASWELL-NEXT: # sched: [2:0.50] 13319 ; HASWELL-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13320 ; HASWELL-NEXT: # sched: [2:0.50] 13321 ; HASWELL-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13322 ; HASWELL-NEXT: # sched: [9:1.00] 13323 ; HASWELL-NEXT: sbbq $7, %rdi # sched: [2:0.50] 13324 ; HASWELL-NEXT: sbbq $7, (%rsi) # sched: [9:1.00] 13325 ; HASWELL-NEXT: sbbq %rdx, %rdi # sched: [2:0.50] 13326 ; HASWELL-NEXT: sbbq %rdi, (%rsi) # sched: [9:1.00] 13327 ; HASWELL-NEXT: sbbq (%rsi), %rdi # sched: [7:0.50] 13328 ; HASWELL-NEXT: #NO_APP 13329 ; HASWELL-NEXT: retq # sched: [7:1.00] 13330 ; 13331 ; BROADWELL-LABEL: test_sbb_64: 13332 ; BROADWELL: # %bb.0: 13333 ; BROADWELL-NEXT: #APP 13334 ; BROADWELL-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13335 ; BROADWELL-NEXT: # sched: [1:0.50] 13336 ; BROADWELL-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13337 ; BROADWELL-NEXT: # sched: [1:0.50] 13338 ; BROADWELL-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13339 ; BROADWELL-NEXT: # sched: [8:1.00] 13340 ; BROADWELL-NEXT: sbbq $7, %rdi # sched: [1:0.50] 13341 ; BROADWELL-NEXT: sbbq $7, (%rsi) # sched: [8:1.00] 13342 ; BROADWELL-NEXT: sbbq %rdx, %rdi # sched: [1:0.50] 13343 ; BROADWELL-NEXT: sbbq %rdi, (%rsi) # sched: [8:1.00] 13344 ; BROADWELL-NEXT: sbbq (%rsi), %rdi # sched: [6:0.50] 13345 ; BROADWELL-NEXT: #NO_APP 13346 ; BROADWELL-NEXT: retq # sched: [7:1.00] 13347 ; 13348 ; SKYLAKE-LABEL: test_sbb_64: 13349 ; SKYLAKE: # %bb.0: 13350 ; SKYLAKE-NEXT: #APP 13351 ; SKYLAKE-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13352 ; SKYLAKE-NEXT: # sched: [1:0.50] 13353 ; SKYLAKE-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13354 ; SKYLAKE-NEXT: # sched: [1:0.50] 13355 ; SKYLAKE-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13356 ; SKYLAKE-NEXT: # sched: [8:1.00] 13357 ; SKYLAKE-NEXT: sbbq $7, %rdi # sched: [1:0.50] 13358 ; SKYLAKE-NEXT: sbbq $7, (%rsi) # sched: [8:1.00] 13359 ; SKYLAKE-NEXT: sbbq %rdx, %rdi # sched: [1:0.50] 13360 ; SKYLAKE-NEXT: sbbq %rdi, (%rsi) # sched: [8:1.00] 13361 ; SKYLAKE-NEXT: sbbq (%rsi), %rdi # sched: [6:0.50] 13362 ; SKYLAKE-NEXT: #NO_APP 13363 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 13364 ; 13365 ; SKX-LABEL: test_sbb_64: 13366 ; SKX: # %bb.0: 13367 ; SKX-NEXT: #APP 13368 ; SKX-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13369 ; SKX-NEXT: # sched: [1:0.50] 13370 ; SKX-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13371 ; SKX-NEXT: # sched: [1:0.50] 13372 ; SKX-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13373 ; SKX-NEXT: # sched: [8:1.00] 13374 ; SKX-NEXT: sbbq $7, %rdi # sched: [1:0.50] 13375 ; SKX-NEXT: sbbq $7, (%rsi) # sched: [8:1.00] 13376 ; SKX-NEXT: sbbq %rdx, %rdi # sched: [1:0.50] 13377 ; SKX-NEXT: sbbq %rdi, (%rsi) # sched: [8:1.00] 13378 ; SKX-NEXT: sbbq (%rsi), %rdi # sched: [6:0.50] 13379 ; SKX-NEXT: #NO_APP 13380 ; SKX-NEXT: retq # sched: [7:1.00] 13381 ; 13382 ; BTVER2-LABEL: test_sbb_64: 13383 ; BTVER2: # %bb.0: 13384 ; BTVER2-NEXT: #APP 13385 ; BTVER2-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13386 ; BTVER2-NEXT: # sched: [1:1.00] 13387 ; BTVER2-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13388 ; BTVER2-NEXT: # sched: [1:1.00] 13389 ; BTVER2-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13390 ; BTVER2-NEXT: # sched: [5:1.00] 13391 ; BTVER2-NEXT: sbbq $7, %rdi # sched: [1:1.00] 13392 ; BTVER2-NEXT: sbbq $7, (%rsi) # sched: [5:1.00] 13393 ; BTVER2-NEXT: sbbq %rdx, %rdi # sched: [1:1.00] 13394 ; BTVER2-NEXT: sbbq %rdi, (%rsi) # sched: [5:1.00] 13395 ; BTVER2-NEXT: sbbq (%rsi), %rdi # sched: [4:1.00] 13396 ; BTVER2-NEXT: #NO_APP 13397 ; BTVER2-NEXT: retq # sched: [4:1.00] 13398 ; 13399 ; ZNVER1-LABEL: test_sbb_64: 13400 ; ZNVER1: # %bb.0: 13401 ; ZNVER1-NEXT: #APP 13402 ; ZNVER1-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13403 ; ZNVER1-NEXT: # sched: [1:0.25] 13404 ; ZNVER1-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13405 ; ZNVER1-NEXT: # sched: [1:0.25] 13406 ; ZNVER1-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13407 ; ZNVER1-NEXT: # sched: [5:0.50] 13408 ; ZNVER1-NEXT: sbbq $7, %rdi # sched: [1:0.25] 13409 ; ZNVER1-NEXT: sbbq $7, (%rsi) # sched: [5:0.50] 13410 ; ZNVER1-NEXT: sbbq %rdx, %rdi # sched: [1:0.25] 13411 ; ZNVER1-NEXT: sbbq %rdi, (%rsi) # sched: [5:0.50] 13412 ; ZNVER1-NEXT: sbbq (%rsi), %rdi # sched: [5:0.50] 13413 ; ZNVER1-NEXT: #NO_APP 13414 ; ZNVER1-NEXT: retq # sched: [1:0.50] 13415 tail call void asm "sbbq $3, %RAX \0A\09 sbbq $3, $0 \0A\09 sbbq $3, $2 \0A\09 sbbq $4, $0 \0A\09 sbbq $4, $2 \0A\09 sbbq $1, $0 \0A\09 sbbq $0, $2 \0A\09 sbbq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 13416 ret void 13417 } 13418 13419 define void @test_scas() optsize { 13420 ; GENERIC-LABEL: test_scas: 13421 ; GENERIC: # %bb.0: 13422 ; GENERIC-NEXT: #APP 13423 ; GENERIC-NEXT: scasb %es:(%rdi), %al # sched: [2:0.67] 13424 ; GENERIC-NEXT: scasw %es:(%rdi), %ax # sched: [2:0.67] 13425 ; GENERIC-NEXT: scasl %es:(%rdi), %eax # sched: [2:0.67] 13426 ; GENERIC-NEXT: scasq %es:(%rdi), %rax # sched: [2:0.67] 13427 ; GENERIC-NEXT: #NO_APP 13428 ; GENERIC-NEXT: retq # sched: [1:1.00] 13429 ; 13430 ; ATOM-LABEL: test_scas: 13431 ; ATOM: # %bb.0: 13432 ; ATOM-NEXT: #APP 13433 ; ATOM-NEXT: scasb %es:(%rdi), %al # sched: [2:1.00] 13434 ; ATOM-NEXT: scasw %es:(%rdi), %ax # sched: [2:1.00] 13435 ; ATOM-NEXT: scasl %es:(%rdi), %eax # sched: [2:1.00] 13436 ; ATOM-NEXT: scasq %es:(%rdi), %rax # sched: [2:1.00] 13437 ; ATOM-NEXT: #NO_APP 13438 ; ATOM-NEXT: retq # sched: [79:39.50] 13439 ; 13440 ; SLM-LABEL: test_scas: 13441 ; SLM: # %bb.0: 13442 ; SLM-NEXT: #APP 13443 ; SLM-NEXT: scasb %es:(%rdi), %al # sched: [100:1.00] 13444 ; SLM-NEXT: scasw %es:(%rdi), %ax # sched: [100:1.00] 13445 ; SLM-NEXT: scasl %es:(%rdi), %eax # sched: [100:1.00] 13446 ; SLM-NEXT: scasq %es:(%rdi), %rax # sched: [100:1.00] 13447 ; SLM-NEXT: #NO_APP 13448 ; SLM-NEXT: retq # sched: [4:1.00] 13449 ; 13450 ; SANDY-LABEL: test_scas: 13451 ; SANDY: # %bb.0: 13452 ; SANDY-NEXT: #APP 13453 ; SANDY-NEXT: scasb %es:(%rdi), %al # sched: [2:0.67] 13454 ; SANDY-NEXT: scasw %es:(%rdi), %ax # sched: [2:0.67] 13455 ; SANDY-NEXT: scasl %es:(%rdi), %eax # sched: [2:0.67] 13456 ; SANDY-NEXT: scasq %es:(%rdi), %rax # sched: [2:0.67] 13457 ; SANDY-NEXT: #NO_APP 13458 ; SANDY-NEXT: retq # sched: [1:1.00] 13459 ; 13460 ; HASWELL-LABEL: test_scas: 13461 ; HASWELL: # %bb.0: 13462 ; HASWELL-NEXT: #APP 13463 ; HASWELL-NEXT: scasb %es:(%rdi), %al # sched: [7:0.50] 13464 ; HASWELL-NEXT: scasw %es:(%rdi), %ax # sched: [7:0.50] 13465 ; HASWELL-NEXT: scasl %es:(%rdi), %eax # sched: [7:0.50] 13466 ; HASWELL-NEXT: scasq %es:(%rdi), %rax # sched: [7:0.50] 13467 ; HASWELL-NEXT: #NO_APP 13468 ; HASWELL-NEXT: retq # sched: [7:1.00] 13469 ; 13470 ; BROADWELL-LABEL: test_scas: 13471 ; BROADWELL: # %bb.0: 13472 ; BROADWELL-NEXT: #APP 13473 ; BROADWELL-NEXT: scasb %es:(%rdi), %al # sched: [7:0.50] 13474 ; BROADWELL-NEXT: scasw %es:(%rdi), %ax # sched: [7:0.50] 13475 ; BROADWELL-NEXT: scasl %es:(%rdi), %eax # sched: [7:0.50] 13476 ; BROADWELL-NEXT: scasq %es:(%rdi), %rax # sched: [7:0.50] 13477 ; BROADWELL-NEXT: #NO_APP 13478 ; BROADWELL-NEXT: retq # sched: [7:1.00] 13479 ; 13480 ; SKYLAKE-LABEL: test_scas: 13481 ; SKYLAKE: # %bb.0: 13482 ; SKYLAKE-NEXT: #APP 13483 ; SKYLAKE-NEXT: scasb %es:(%rdi), %al # sched: [7:0.50] 13484 ; SKYLAKE-NEXT: scasw %es:(%rdi), %ax # sched: [7:0.50] 13485 ; SKYLAKE-NEXT: scasl %es:(%rdi), %eax # sched: [7:0.50] 13486 ; SKYLAKE-NEXT: scasq %es:(%rdi), %rax # sched: [7:0.50] 13487 ; SKYLAKE-NEXT: #NO_APP 13488 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 13489 ; 13490 ; SKX-LABEL: test_scas: 13491 ; SKX: # %bb.0: 13492 ; SKX-NEXT: #APP 13493 ; SKX-NEXT: scasb %es:(%rdi), %al # sched: [7:0.50] 13494 ; SKX-NEXT: scasw %es:(%rdi), %ax # sched: [7:0.50] 13495 ; SKX-NEXT: scasl %es:(%rdi), %eax # sched: [7:0.50] 13496 ; SKX-NEXT: scasq %es:(%rdi), %rax # sched: [7:0.50] 13497 ; SKX-NEXT: #NO_APP 13498 ; SKX-NEXT: retq # sched: [7:1.00] 13499 ; 13500 ; BTVER2-LABEL: test_scas: 13501 ; BTVER2: # %bb.0: 13502 ; BTVER2-NEXT: #APP 13503 ; BTVER2-NEXT: scasb %es:(%rdi), %al # sched: [100:0.50] 13504 ; BTVER2-NEXT: scasw %es:(%rdi), %ax # sched: [100:0.50] 13505 ; BTVER2-NEXT: scasl %es:(%rdi), %eax # sched: [100:0.50] 13506 ; BTVER2-NEXT: scasq %es:(%rdi), %rax # sched: [100:0.50] 13507 ; BTVER2-NEXT: #NO_APP 13508 ; BTVER2-NEXT: retq # sched: [4:1.00] 13509 ; 13510 ; ZNVER1-LABEL: test_scas: 13511 ; ZNVER1: # %bb.0: 13512 ; ZNVER1-NEXT: #APP 13513 ; ZNVER1-NEXT: scasb %es:(%rdi), %al # sched: [100:0.25] 13514 ; ZNVER1-NEXT: scasw %es:(%rdi), %ax # sched: [100:0.25] 13515 ; ZNVER1-NEXT: scasl %es:(%rdi), %eax # sched: [100:0.25] 13516 ; ZNVER1-NEXT: scasq %es:(%rdi), %rax # sched: [100:0.25] 13517 ; ZNVER1-NEXT: #NO_APP 13518 ; ZNVER1-NEXT: retq # sched: [1:0.50] 13519 call void asm sideeffect "scasb \0A\09 scasw \0A\09 scasl \0A\09 scasq", ""() 13520 ret void 13521 } 13522 13523 define void @test_setcc(i8 %a0, i8 *%a1) optsize { 13524 ; GENERIC-LABEL: test_setcc: 13525 ; GENERIC: # %bb.0: 13526 ; GENERIC-NEXT: #APP 13527 ; GENERIC-NEXT: seto %dil # sched: [1:0.50] 13528 ; GENERIC-NEXT: setno %dil # sched: [1:0.50] 13529 ; GENERIC-NEXT: setb %dil # sched: [1:0.50] 13530 ; GENERIC-NEXT: setae %dil # sched: [1:0.50] 13531 ; GENERIC-NEXT: sete %dil # sched: [1:0.50] 13532 ; GENERIC-NEXT: setne %dil # sched: [1:0.50] 13533 ; GENERIC-NEXT: setbe %dil # sched: [2:1.00] 13534 ; GENERIC-NEXT: seta %dil # sched: [2:1.00] 13535 ; GENERIC-NEXT: sets %dil # sched: [1:0.50] 13536 ; GENERIC-NEXT: setns %dil # sched: [1:0.50] 13537 ; GENERIC-NEXT: setp %dil # sched: [1:0.50] 13538 ; GENERIC-NEXT: setnp %dil # sched: [1:0.50] 13539 ; GENERIC-NEXT: setl %dil # sched: [1:0.50] 13540 ; GENERIC-NEXT: setge %dil # sched: [1:0.50] 13541 ; GENERIC-NEXT: setle %dil # sched: [1:0.50] 13542 ; GENERIC-NEXT: setg %dil # sched: [1:0.50] 13543 ; GENERIC-NEXT: seto (%rsi) # sched: [2:1.00] 13544 ; GENERIC-NEXT: setno (%rsi) # sched: [2:1.00] 13545 ; GENERIC-NEXT: setb (%rsi) # sched: [2:1.00] 13546 ; GENERIC-NEXT: setae (%rsi) # sched: [2:1.00] 13547 ; GENERIC-NEXT: sete (%rsi) # sched: [2:1.00] 13548 ; GENERIC-NEXT: setne (%rsi) # sched: [2:1.00] 13549 ; GENERIC-NEXT: setbe (%rsi) # sched: [3:1.00] 13550 ; GENERIC-NEXT: seta (%rsi) # sched: [3:1.00] 13551 ; GENERIC-NEXT: sets (%rsi) # sched: [2:1.00] 13552 ; GENERIC-NEXT: setns (%rsi) # sched: [2:1.00] 13553 ; GENERIC-NEXT: setp (%rsi) # sched: [2:1.00] 13554 ; GENERIC-NEXT: setnp (%rsi) # sched: [2:1.00] 13555 ; GENERIC-NEXT: setl (%rsi) # sched: [2:1.00] 13556 ; GENERIC-NEXT: setge (%rsi) # sched: [2:1.00] 13557 ; GENERIC-NEXT: setle (%rsi) # sched: [2:1.00] 13558 ; GENERIC-NEXT: setg (%rsi) # sched: [2:1.00] 13559 ; GENERIC-NEXT: #NO_APP 13560 ; GENERIC-NEXT: retq # sched: [1:1.00] 13561 ; 13562 ; ATOM-LABEL: test_setcc: 13563 ; ATOM: # %bb.0: 13564 ; ATOM-NEXT: #APP 13565 ; ATOM-NEXT: seto %dil # sched: [1:0.50] 13566 ; ATOM-NEXT: setno %dil # sched: [1:0.50] 13567 ; ATOM-NEXT: setb %dil # sched: [1:0.50] 13568 ; ATOM-NEXT: setae %dil # sched: [1:0.50] 13569 ; ATOM-NEXT: sete %dil # sched: [1:0.50] 13570 ; ATOM-NEXT: setne %dil # sched: [1:0.50] 13571 ; ATOM-NEXT: setbe %dil # sched: [1:0.50] 13572 ; ATOM-NEXT: seta %dil # sched: [1:0.50] 13573 ; ATOM-NEXT: sets %dil # sched: [1:0.50] 13574 ; ATOM-NEXT: setns %dil # sched: [1:0.50] 13575 ; ATOM-NEXT: setp %dil # sched: [1:0.50] 13576 ; ATOM-NEXT: setnp %dil # sched: [1:0.50] 13577 ; ATOM-NEXT: setl %dil # sched: [1:0.50] 13578 ; ATOM-NEXT: setge %dil # sched: [1:0.50] 13579 ; ATOM-NEXT: setle %dil # sched: [1:0.50] 13580 ; ATOM-NEXT: setg %dil # sched: [1:0.50] 13581 ; ATOM-NEXT: seto (%rsi) # sched: [2:1.00] 13582 ; ATOM-NEXT: setno (%rsi) # sched: [2:1.00] 13583 ; ATOM-NEXT: setb (%rsi) # sched: [2:1.00] 13584 ; ATOM-NEXT: setae (%rsi) # sched: [2:1.00] 13585 ; ATOM-NEXT: sete (%rsi) # sched: [2:1.00] 13586 ; ATOM-NEXT: setne (%rsi) # sched: [2:1.00] 13587 ; ATOM-NEXT: setbe (%rsi) # sched: [2:1.00] 13588 ; ATOM-NEXT: seta (%rsi) # sched: [2:1.00] 13589 ; ATOM-NEXT: sets (%rsi) # sched: [2:1.00] 13590 ; ATOM-NEXT: setns (%rsi) # sched: [2:1.00] 13591 ; ATOM-NEXT: setp (%rsi) # sched: [2:1.00] 13592 ; ATOM-NEXT: setnp (%rsi) # sched: [2:1.00] 13593 ; ATOM-NEXT: setl (%rsi) # sched: [2:1.00] 13594 ; ATOM-NEXT: setge (%rsi) # sched: [2:1.00] 13595 ; ATOM-NEXT: setle (%rsi) # sched: [2:1.00] 13596 ; ATOM-NEXT: setg (%rsi) # sched: [2:1.00] 13597 ; ATOM-NEXT: #NO_APP 13598 ; ATOM-NEXT: retq # sched: [79:39.50] 13599 ; 13600 ; SLM-LABEL: test_setcc: 13601 ; SLM: # %bb.0: 13602 ; SLM-NEXT: #APP 13603 ; SLM-NEXT: seto %dil # sched: [1:0.50] 13604 ; SLM-NEXT: setno %dil # sched: [1:0.50] 13605 ; SLM-NEXT: setb %dil # sched: [1:0.50] 13606 ; SLM-NEXT: setae %dil # sched: [1:0.50] 13607 ; SLM-NEXT: sete %dil # sched: [1:0.50] 13608 ; SLM-NEXT: setne %dil # sched: [1:0.50] 13609 ; SLM-NEXT: setbe %dil # sched: [1:0.50] 13610 ; SLM-NEXT: seta %dil # sched: [1:0.50] 13611 ; SLM-NEXT: sets %dil # sched: [1:0.50] 13612 ; SLM-NEXT: setns %dil # sched: [1:0.50] 13613 ; SLM-NEXT: setp %dil # sched: [1:0.50] 13614 ; SLM-NEXT: setnp %dil # sched: [1:0.50] 13615 ; SLM-NEXT: setl %dil # sched: [1:0.50] 13616 ; SLM-NEXT: setge %dil # sched: [1:0.50] 13617 ; SLM-NEXT: setle %dil # sched: [1:0.50] 13618 ; SLM-NEXT: setg %dil # sched: [1:0.50] 13619 ; SLM-NEXT: seto (%rsi) # sched: [1:1.00] 13620 ; SLM-NEXT: setno (%rsi) # sched: [1:1.00] 13621 ; SLM-NEXT: setb (%rsi) # sched: [1:1.00] 13622 ; SLM-NEXT: setae (%rsi) # sched: [1:1.00] 13623 ; SLM-NEXT: sete (%rsi) # sched: [1:1.00] 13624 ; SLM-NEXT: setne (%rsi) # sched: [1:1.00] 13625 ; SLM-NEXT: setbe (%rsi) # sched: [1:1.00] 13626 ; SLM-NEXT: seta (%rsi) # sched: [1:1.00] 13627 ; SLM-NEXT: sets (%rsi) # sched: [1:1.00] 13628 ; SLM-NEXT: setns (%rsi) # sched: [1:1.00] 13629 ; SLM-NEXT: setp (%rsi) # sched: [1:1.00] 13630 ; SLM-NEXT: setnp (%rsi) # sched: [1:1.00] 13631 ; SLM-NEXT: setl (%rsi) # sched: [1:1.00] 13632 ; SLM-NEXT: setge (%rsi) # sched: [1:1.00] 13633 ; SLM-NEXT: setle (%rsi) # sched: [1:1.00] 13634 ; SLM-NEXT: setg (%rsi) # sched: [1:1.00] 13635 ; SLM-NEXT: #NO_APP 13636 ; SLM-NEXT: retq # sched: [4:1.00] 13637 ; 13638 ; SANDY-LABEL: test_setcc: 13639 ; SANDY: # %bb.0: 13640 ; SANDY-NEXT: #APP 13641 ; SANDY-NEXT: seto %dil # sched: [1:0.50] 13642 ; SANDY-NEXT: setno %dil # sched: [1:0.50] 13643 ; SANDY-NEXT: setb %dil # sched: [1:0.50] 13644 ; SANDY-NEXT: setae %dil # sched: [1:0.50] 13645 ; SANDY-NEXT: sete %dil # sched: [1:0.50] 13646 ; SANDY-NEXT: setne %dil # sched: [1:0.50] 13647 ; SANDY-NEXT: setbe %dil # sched: [2:1.00] 13648 ; SANDY-NEXT: seta %dil # sched: [2:1.00] 13649 ; SANDY-NEXT: sets %dil # sched: [1:0.50] 13650 ; SANDY-NEXT: setns %dil # sched: [1:0.50] 13651 ; SANDY-NEXT: setp %dil # sched: [1:0.50] 13652 ; SANDY-NEXT: setnp %dil # sched: [1:0.50] 13653 ; SANDY-NEXT: setl %dil # sched: [1:0.50] 13654 ; SANDY-NEXT: setge %dil # sched: [1:0.50] 13655 ; SANDY-NEXT: setle %dil # sched: [1:0.50] 13656 ; SANDY-NEXT: setg %dil # sched: [1:0.50] 13657 ; SANDY-NEXT: seto (%rsi) # sched: [2:1.00] 13658 ; SANDY-NEXT: setno (%rsi) # sched: [2:1.00] 13659 ; SANDY-NEXT: setb (%rsi) # sched: [2:1.00] 13660 ; SANDY-NEXT: setae (%rsi) # sched: [2:1.00] 13661 ; SANDY-NEXT: sete (%rsi) # sched: [2:1.00] 13662 ; SANDY-NEXT: setne (%rsi) # sched: [2:1.00] 13663 ; SANDY-NEXT: setbe (%rsi) # sched: [3:1.00] 13664 ; SANDY-NEXT: seta (%rsi) # sched: [3:1.00] 13665 ; SANDY-NEXT: sets (%rsi) # sched: [2:1.00] 13666 ; SANDY-NEXT: setns (%rsi) # sched: [2:1.00] 13667 ; SANDY-NEXT: setp (%rsi) # sched: [2:1.00] 13668 ; SANDY-NEXT: setnp (%rsi) # sched: [2:1.00] 13669 ; SANDY-NEXT: setl (%rsi) # sched: [2:1.00] 13670 ; SANDY-NEXT: setge (%rsi) # sched: [2:1.00] 13671 ; SANDY-NEXT: setle (%rsi) # sched: [2:1.00] 13672 ; SANDY-NEXT: setg (%rsi) # sched: [2:1.00] 13673 ; SANDY-NEXT: #NO_APP 13674 ; SANDY-NEXT: retq # sched: [1:1.00] 13675 ; 13676 ; HASWELL-LABEL: test_setcc: 13677 ; HASWELL: # %bb.0: 13678 ; HASWELL-NEXT: #APP 13679 ; HASWELL-NEXT: seto %dil # sched: [1:0.50] 13680 ; HASWELL-NEXT: setno %dil # sched: [1:0.50] 13681 ; HASWELL-NEXT: setb %dil # sched: [1:0.50] 13682 ; HASWELL-NEXT: setae %dil # sched: [1:0.50] 13683 ; HASWELL-NEXT: sete %dil # sched: [1:0.50] 13684 ; HASWELL-NEXT: setne %dil # sched: [1:0.50] 13685 ; HASWELL-NEXT: setbe %dil # sched: [2:0.50] 13686 ; HASWELL-NEXT: seta %dil # sched: [2:0.50] 13687 ; HASWELL-NEXT: sets %dil # sched: [1:0.50] 13688 ; HASWELL-NEXT: setns %dil # sched: [1:0.50] 13689 ; HASWELL-NEXT: setp %dil # sched: [1:0.50] 13690 ; HASWELL-NEXT: setnp %dil # sched: [1:0.50] 13691 ; HASWELL-NEXT: setl %dil # sched: [1:0.50] 13692 ; HASWELL-NEXT: setge %dil # sched: [1:0.50] 13693 ; HASWELL-NEXT: setle %dil # sched: [1:0.50] 13694 ; HASWELL-NEXT: setg %dil # sched: [1:0.50] 13695 ; HASWELL-NEXT: seto (%rsi) # sched: [2:1.00] 13696 ; HASWELL-NEXT: setno (%rsi) # sched: [2:1.00] 13697 ; HASWELL-NEXT: setb (%rsi) # sched: [2:1.00] 13698 ; HASWELL-NEXT: setae (%rsi) # sched: [2:1.00] 13699 ; HASWELL-NEXT: sete (%rsi) # sched: [2:1.00] 13700 ; HASWELL-NEXT: setne (%rsi) # sched: [2:1.00] 13701 ; HASWELL-NEXT: setbe (%rsi) # sched: [3:1.00] 13702 ; HASWELL-NEXT: seta (%rsi) # sched: [3:1.00] 13703 ; HASWELL-NEXT: sets (%rsi) # sched: [2:1.00] 13704 ; HASWELL-NEXT: setns (%rsi) # sched: [2:1.00] 13705 ; HASWELL-NEXT: setp (%rsi) # sched: [2:1.00] 13706 ; HASWELL-NEXT: setnp (%rsi) # sched: [2:1.00] 13707 ; HASWELL-NEXT: setl (%rsi) # sched: [2:1.00] 13708 ; HASWELL-NEXT: setge (%rsi) # sched: [2:1.00] 13709 ; HASWELL-NEXT: setle (%rsi) # sched: [2:1.00] 13710 ; HASWELL-NEXT: setg (%rsi) # sched: [2:1.00] 13711 ; HASWELL-NEXT: #NO_APP 13712 ; HASWELL-NEXT: retq # sched: [7:1.00] 13713 ; 13714 ; BROADWELL-LABEL: test_setcc: 13715 ; BROADWELL: # %bb.0: 13716 ; BROADWELL-NEXT: #APP 13717 ; BROADWELL-NEXT: seto %dil # sched: [1:0.50] 13718 ; BROADWELL-NEXT: setno %dil # sched: [1:0.50] 13719 ; BROADWELL-NEXT: setb %dil # sched: [1:0.50] 13720 ; BROADWELL-NEXT: setae %dil # sched: [1:0.50] 13721 ; BROADWELL-NEXT: sete %dil # sched: [1:0.50] 13722 ; BROADWELL-NEXT: setne %dil # sched: [1:0.50] 13723 ; BROADWELL-NEXT: setbe %dil # sched: [2:0.50] 13724 ; BROADWELL-NEXT: seta %dil # sched: [2:0.50] 13725 ; BROADWELL-NEXT: sets %dil # sched: [1:0.50] 13726 ; BROADWELL-NEXT: setns %dil # sched: [1:0.50] 13727 ; BROADWELL-NEXT: setp %dil # sched: [1:0.50] 13728 ; BROADWELL-NEXT: setnp %dil # sched: [1:0.50] 13729 ; BROADWELL-NEXT: setl %dil # sched: [1:0.50] 13730 ; BROADWELL-NEXT: setge %dil # sched: [1:0.50] 13731 ; BROADWELL-NEXT: setle %dil # sched: [1:0.50] 13732 ; BROADWELL-NEXT: setg %dil # sched: [1:0.50] 13733 ; BROADWELL-NEXT: seto (%rsi) # sched: [2:1.00] 13734 ; BROADWELL-NEXT: setno (%rsi) # sched: [2:1.00] 13735 ; BROADWELL-NEXT: setb (%rsi) # sched: [2:1.00] 13736 ; BROADWELL-NEXT: setae (%rsi) # sched: [2:1.00] 13737 ; BROADWELL-NEXT: sete (%rsi) # sched: [2:1.00] 13738 ; BROADWELL-NEXT: setne (%rsi) # sched: [2:1.00] 13739 ; BROADWELL-NEXT: setbe (%rsi) # sched: [3:1.00] 13740 ; BROADWELL-NEXT: seta (%rsi) # sched: [3:1.00] 13741 ; BROADWELL-NEXT: sets (%rsi) # sched: [2:1.00] 13742 ; BROADWELL-NEXT: setns (%rsi) # sched: [2:1.00] 13743 ; BROADWELL-NEXT: setp (%rsi) # sched: [2:1.00] 13744 ; BROADWELL-NEXT: setnp (%rsi) # sched: [2:1.00] 13745 ; BROADWELL-NEXT: setl (%rsi) # sched: [2:1.00] 13746 ; BROADWELL-NEXT: setge (%rsi) # sched: [2:1.00] 13747 ; BROADWELL-NEXT: setle (%rsi) # sched: [2:1.00] 13748 ; BROADWELL-NEXT: setg (%rsi) # sched: [2:1.00] 13749 ; BROADWELL-NEXT: #NO_APP 13750 ; BROADWELL-NEXT: retq # sched: [7:1.00] 13751 ; 13752 ; SKYLAKE-LABEL: test_setcc: 13753 ; SKYLAKE: # %bb.0: 13754 ; SKYLAKE-NEXT: #APP 13755 ; SKYLAKE-NEXT: seto %dil # sched: [1:0.50] 13756 ; SKYLAKE-NEXT: setno %dil # sched: [1:0.50] 13757 ; SKYLAKE-NEXT: setb %dil # sched: [1:0.50] 13758 ; SKYLAKE-NEXT: setae %dil # sched: [1:0.50] 13759 ; SKYLAKE-NEXT: sete %dil # sched: [1:0.50] 13760 ; SKYLAKE-NEXT: setne %dil # sched: [1:0.50] 13761 ; SKYLAKE-NEXT: setbe %dil # sched: [2:1.00] 13762 ; SKYLAKE-NEXT: seta %dil # sched: [2:1.00] 13763 ; SKYLAKE-NEXT: sets %dil # sched: [1:0.50] 13764 ; SKYLAKE-NEXT: setns %dil # sched: [1:0.50] 13765 ; SKYLAKE-NEXT: setp %dil # sched: [1:0.50] 13766 ; SKYLAKE-NEXT: setnp %dil # sched: [1:0.50] 13767 ; SKYLAKE-NEXT: setl %dil # sched: [1:0.50] 13768 ; SKYLAKE-NEXT: setge %dil # sched: [1:0.50] 13769 ; SKYLAKE-NEXT: setle %dil # sched: [1:0.50] 13770 ; SKYLAKE-NEXT: setg %dil # sched: [1:0.50] 13771 ; SKYLAKE-NEXT: seto (%rsi) # sched: [2:1.00] 13772 ; SKYLAKE-NEXT: setno (%rsi) # sched: [2:1.00] 13773 ; SKYLAKE-NEXT: setb (%rsi) # sched: [2:1.00] 13774 ; SKYLAKE-NEXT: setae (%rsi) # sched: [2:1.00] 13775 ; SKYLAKE-NEXT: sete (%rsi) # sched: [2:1.00] 13776 ; SKYLAKE-NEXT: setne (%rsi) # sched: [2:1.00] 13777 ; SKYLAKE-NEXT: setbe (%rsi) # sched: [3:1.00] 13778 ; SKYLAKE-NEXT: seta (%rsi) # sched: [3:1.00] 13779 ; SKYLAKE-NEXT: sets (%rsi) # sched: [2:1.00] 13780 ; SKYLAKE-NEXT: setns (%rsi) # sched: [2:1.00] 13781 ; SKYLAKE-NEXT: setp (%rsi) # sched: [2:1.00] 13782 ; SKYLAKE-NEXT: setnp (%rsi) # sched: [2:1.00] 13783 ; SKYLAKE-NEXT: setl (%rsi) # sched: [2:1.00] 13784 ; SKYLAKE-NEXT: setge (%rsi) # sched: [2:1.00] 13785 ; SKYLAKE-NEXT: setle (%rsi) # sched: [2:1.00] 13786 ; SKYLAKE-NEXT: setg (%rsi) # sched: [2:1.00] 13787 ; SKYLAKE-NEXT: #NO_APP 13788 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 13789 ; 13790 ; SKX-LABEL: test_setcc: 13791 ; SKX: # %bb.0: 13792 ; SKX-NEXT: #APP 13793 ; SKX-NEXT: seto %dil # sched: [1:0.50] 13794 ; SKX-NEXT: setno %dil # sched: [1:0.50] 13795 ; SKX-NEXT: setb %dil # sched: [1:0.50] 13796 ; SKX-NEXT: setae %dil # sched: [1:0.50] 13797 ; SKX-NEXT: sete %dil # sched: [1:0.50] 13798 ; SKX-NEXT: setne %dil # sched: [1:0.50] 13799 ; SKX-NEXT: setbe %dil # sched: [2:1.00] 13800 ; SKX-NEXT: seta %dil # sched: [2:1.00] 13801 ; SKX-NEXT: sets %dil # sched: [1:0.50] 13802 ; SKX-NEXT: setns %dil # sched: [1:0.50] 13803 ; SKX-NEXT: setp %dil # sched: [1:0.50] 13804 ; SKX-NEXT: setnp %dil # sched: [1:0.50] 13805 ; SKX-NEXT: setl %dil # sched: [1:0.50] 13806 ; SKX-NEXT: setge %dil # sched: [1:0.50] 13807 ; SKX-NEXT: setle %dil # sched: [1:0.50] 13808 ; SKX-NEXT: setg %dil # sched: [1:0.50] 13809 ; SKX-NEXT: seto (%rsi) # sched: [2:1.00] 13810 ; SKX-NEXT: setno (%rsi) # sched: [2:1.00] 13811 ; SKX-NEXT: setb (%rsi) # sched: [2:1.00] 13812 ; SKX-NEXT: setae (%rsi) # sched: [2:1.00] 13813 ; SKX-NEXT: sete (%rsi) # sched: [2:1.00] 13814 ; SKX-NEXT: setne (%rsi) # sched: [2:1.00] 13815 ; SKX-NEXT: setbe (%rsi) # sched: [3:1.00] 13816 ; SKX-NEXT: seta (%rsi) # sched: [3:1.00] 13817 ; SKX-NEXT: sets (%rsi) # sched: [2:1.00] 13818 ; SKX-NEXT: setns (%rsi) # sched: [2:1.00] 13819 ; SKX-NEXT: setp (%rsi) # sched: [2:1.00] 13820 ; SKX-NEXT: setnp (%rsi) # sched: [2:1.00] 13821 ; SKX-NEXT: setl (%rsi) # sched: [2:1.00] 13822 ; SKX-NEXT: setge (%rsi) # sched: [2:1.00] 13823 ; SKX-NEXT: setle (%rsi) # sched: [2:1.00] 13824 ; SKX-NEXT: setg (%rsi) # sched: [2:1.00] 13825 ; SKX-NEXT: #NO_APP 13826 ; SKX-NEXT: retq # sched: [7:1.00] 13827 ; 13828 ; BTVER2-LABEL: test_setcc: 13829 ; BTVER2: # %bb.0: 13830 ; BTVER2-NEXT: #APP 13831 ; BTVER2-NEXT: seto %dil # sched: [1:0.50] 13832 ; BTVER2-NEXT: setno %dil # sched: [1:0.50] 13833 ; BTVER2-NEXT: setb %dil # sched: [1:0.50] 13834 ; BTVER2-NEXT: setae %dil # sched: [1:0.50] 13835 ; BTVER2-NEXT: sete %dil # sched: [1:0.50] 13836 ; BTVER2-NEXT: setne %dil # sched: [1:0.50] 13837 ; BTVER2-NEXT: setbe %dil # sched: [1:0.50] 13838 ; BTVER2-NEXT: seta %dil # sched: [1:0.50] 13839 ; BTVER2-NEXT: sets %dil # sched: [1:0.50] 13840 ; BTVER2-NEXT: setns %dil # sched: [1:0.50] 13841 ; BTVER2-NEXT: setp %dil # sched: [1:0.50] 13842 ; BTVER2-NEXT: setnp %dil # sched: [1:0.50] 13843 ; BTVER2-NEXT: setl %dil # sched: [1:0.50] 13844 ; BTVER2-NEXT: setge %dil # sched: [1:0.50] 13845 ; BTVER2-NEXT: setle %dil # sched: [1:0.50] 13846 ; BTVER2-NEXT: setg %dil # sched: [1:0.50] 13847 ; BTVER2-NEXT: seto (%rsi) # sched: [1:1.00] 13848 ; BTVER2-NEXT: setno (%rsi) # sched: [1:1.00] 13849 ; BTVER2-NEXT: setb (%rsi) # sched: [1:1.00] 13850 ; BTVER2-NEXT: setae (%rsi) # sched: [1:1.00] 13851 ; BTVER2-NEXT: sete (%rsi) # sched: [1:1.00] 13852 ; BTVER2-NEXT: setne (%rsi) # sched: [1:1.00] 13853 ; BTVER2-NEXT: setbe (%rsi) # sched: [1:1.00] 13854 ; BTVER2-NEXT: seta (%rsi) # sched: [1:1.00] 13855 ; BTVER2-NEXT: sets (%rsi) # sched: [1:1.00] 13856 ; BTVER2-NEXT: setns (%rsi) # sched: [1:1.00] 13857 ; BTVER2-NEXT: setp (%rsi) # sched: [1:1.00] 13858 ; BTVER2-NEXT: setnp (%rsi) # sched: [1:1.00] 13859 ; BTVER2-NEXT: setl (%rsi) # sched: [1:1.00] 13860 ; BTVER2-NEXT: setge (%rsi) # sched: [1:1.00] 13861 ; BTVER2-NEXT: setle (%rsi) # sched: [1:1.00] 13862 ; BTVER2-NEXT: setg (%rsi) # sched: [1:1.00] 13863 ; BTVER2-NEXT: #NO_APP 13864 ; BTVER2-NEXT: retq # sched: [4:1.00] 13865 ; 13866 ; ZNVER1-LABEL: test_setcc: 13867 ; ZNVER1: # %bb.0: 13868 ; ZNVER1-NEXT: #APP 13869 ; ZNVER1-NEXT: seto %dil # sched: [1:0.25] 13870 ; ZNVER1-NEXT: setno %dil # sched: [1:0.25] 13871 ; ZNVER1-NEXT: setb %dil # sched: [1:0.25] 13872 ; ZNVER1-NEXT: setae %dil # sched: [1:0.25] 13873 ; ZNVER1-NEXT: sete %dil # sched: [1:0.25] 13874 ; ZNVER1-NEXT: setne %dil # sched: [1:0.25] 13875 ; ZNVER1-NEXT: setbe %dil # sched: [1:0.25] 13876 ; ZNVER1-NEXT: seta %dil # sched: [1:0.25] 13877 ; ZNVER1-NEXT: sets %dil # sched: [1:0.25] 13878 ; ZNVER1-NEXT: setns %dil # sched: [1:0.25] 13879 ; ZNVER1-NEXT: setp %dil # sched: [1:0.25] 13880 ; ZNVER1-NEXT: setnp %dil # sched: [1:0.25] 13881 ; ZNVER1-NEXT: setl %dil # sched: [1:0.25] 13882 ; ZNVER1-NEXT: setge %dil # sched: [1:0.25] 13883 ; ZNVER1-NEXT: setle %dil # sched: [1:0.25] 13884 ; ZNVER1-NEXT: setg %dil # sched: [1:0.25] 13885 ; ZNVER1-NEXT: seto (%rsi) # sched: [1:0.50] 13886 ; ZNVER1-NEXT: setno (%rsi) # sched: [1:0.50] 13887 ; ZNVER1-NEXT: setb (%rsi) # sched: [1:0.50] 13888 ; ZNVER1-NEXT: setae (%rsi) # sched: [1:0.50] 13889 ; ZNVER1-NEXT: sete (%rsi) # sched: [1:0.50] 13890 ; ZNVER1-NEXT: setne (%rsi) # sched: [1:0.50] 13891 ; ZNVER1-NEXT: setbe (%rsi) # sched: [1:0.50] 13892 ; ZNVER1-NEXT: seta (%rsi) # sched: [1:0.50] 13893 ; ZNVER1-NEXT: sets (%rsi) # sched: [1:0.50] 13894 ; ZNVER1-NEXT: setns (%rsi) # sched: [1:0.50] 13895 ; ZNVER1-NEXT: setp (%rsi) # sched: [1:0.50] 13896 ; ZNVER1-NEXT: setnp (%rsi) # sched: [1:0.50] 13897 ; ZNVER1-NEXT: setl (%rsi) # sched: [1:0.50] 13898 ; ZNVER1-NEXT: setge (%rsi) # sched: [1:0.50] 13899 ; ZNVER1-NEXT: setle (%rsi) # sched: [1:0.50] 13900 ; ZNVER1-NEXT: setg (%rsi) # sched: [1:0.50] 13901 ; ZNVER1-NEXT: #NO_APP 13902 ; ZNVER1-NEXT: retq # sched: [1:0.50] 13903 call void asm sideeffect "seto $0 \0A\09 setno $0 \0A\09 setb $0 \0A\09 setnb $0 \0A\09 setz $0 \0A\09 setnz $0 \0A\09 setbe $0 \0A\09 setnbe $0 \0A\09 sets $0 \0A\09 setns $0 \0A\09 setp $0 \0A\09 setnp $0 \0A\09 setl $0 \0A\09 setnl $0 \0A\09 setle $0 \0A\09 setnle $0 \0A\09 seto $1 \0A\09 setno $1 \0A\09 setb $1 \0A\09 setnb $1 \0A\09 setz $1 \0A\09 setnz $1 \0A\09 setbe $1 \0A\09 setnbe $1 \0A\09 sets $1 \0A\09 setns $1 \0A\09 setp $1 \0A\09 setnp $1 \0A\09 setl $1 \0A\09 setnl $1 \0A\09 setle $1 \0A\09 setnle $1", "r,*m"(i8 %a0, i8 *%a1) 13904 ret void 13905 } 13906 13907 ; TODO - test_sgdt 13908 13909 define void @test_shld_shrd_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 13910 ; GENERIC-LABEL: test_shld_shrd_16: 13911 ; GENERIC: # %bb.0: 13912 ; GENERIC-NEXT: #APP 13913 ; GENERIC-NEXT: shldw %cl, %si, %di # sched: [4:1.50] 13914 ; GENERIC-NEXT: shrdw %cl, %si, %di # sched: [4:1.50] 13915 ; GENERIC-NEXT: shldw %cl, %si, (%rdx) # sched: [10:1.50] 13916 ; GENERIC-NEXT: shrdw %cl, %si, (%rdx) # sched: [10:1.50] 13917 ; GENERIC-NEXT: shldw $7, %si, %di # sched: [2:0.67] 13918 ; GENERIC-NEXT: shrdw $7, %si, %di # sched: [2:0.67] 13919 ; GENERIC-NEXT: shldw $7, %si, (%rdx) # sched: [8:1.00] 13920 ; GENERIC-NEXT: shrdw $7, %si, (%rdx) # sched: [8:1.00] 13921 ; GENERIC-NEXT: #NO_APP 13922 ; GENERIC-NEXT: retq # sched: [1:1.00] 13923 ; 13924 ; ATOM-LABEL: test_shld_shrd_16: 13925 ; ATOM: # %bb.0: 13926 ; ATOM-NEXT: #APP 13927 ; ATOM-NEXT: shldw %cl, %si, %di # sched: [6:3.00] 13928 ; ATOM-NEXT: shrdw %cl, %si, %di # sched: [6:3.00] 13929 ; ATOM-NEXT: shldw %cl, %si, (%rdx) # sched: [6:3.00] 13930 ; ATOM-NEXT: shrdw %cl, %si, (%rdx) # sched: [6:3.00] 13931 ; ATOM-NEXT: shldw $7, %si, %di # sched: [6:3.00] 13932 ; ATOM-NEXT: shrdw $7, %si, %di # sched: [6:3.00] 13933 ; ATOM-NEXT: shldw $7, %si, (%rdx) # sched: [6:3.00] 13934 ; ATOM-NEXT: shrdw $7, %si, (%rdx) # sched: [6:3.00] 13935 ; ATOM-NEXT: #NO_APP 13936 ; ATOM-NEXT: retq # sched: [79:39.50] 13937 ; 13938 ; SLM-LABEL: test_shld_shrd_16: 13939 ; SLM: # %bb.0: 13940 ; SLM-NEXT: #APP 13941 ; SLM-NEXT: shldw %cl, %si, %di # sched: [1:1.00] 13942 ; SLM-NEXT: shrdw %cl, %si, %di # sched: [1:1.00] 13943 ; SLM-NEXT: shldw %cl, %si, (%rdx) # sched: [4:2.00] 13944 ; SLM-NEXT: shrdw %cl, %si, (%rdx) # sched: [4:2.00] 13945 ; SLM-NEXT: shldw $7, %si, %di # sched: [1:1.00] 13946 ; SLM-NEXT: shrdw $7, %si, %di # sched: [1:1.00] 13947 ; SLM-NEXT: shldw $7, %si, (%rdx) # sched: [4:2.00] 13948 ; SLM-NEXT: shrdw $7, %si, (%rdx) # sched: [4:2.00] 13949 ; SLM-NEXT: #NO_APP 13950 ; SLM-NEXT: retq # sched: [4:1.00] 13951 ; 13952 ; SANDY-LABEL: test_shld_shrd_16: 13953 ; SANDY: # %bb.0: 13954 ; SANDY-NEXT: #APP 13955 ; SANDY-NEXT: shldw %cl, %si, %di # sched: [4:1.50] 13956 ; SANDY-NEXT: shrdw %cl, %si, %di # sched: [4:1.50] 13957 ; SANDY-NEXT: shldw %cl, %si, (%rdx) # sched: [10:1.50] 13958 ; SANDY-NEXT: shrdw %cl, %si, (%rdx) # sched: [10:1.50] 13959 ; SANDY-NEXT: shldw $7, %si, %di # sched: [2:0.67] 13960 ; SANDY-NEXT: shrdw $7, %si, %di # sched: [2:0.67] 13961 ; SANDY-NEXT: shldw $7, %si, (%rdx) # sched: [8:1.00] 13962 ; SANDY-NEXT: shrdw $7, %si, (%rdx) # sched: [8:1.00] 13963 ; SANDY-NEXT: #NO_APP 13964 ; SANDY-NEXT: retq # sched: [1:1.00] 13965 ; 13966 ; HASWELL-LABEL: test_shld_shrd_16: 13967 ; HASWELL: # %bb.0: 13968 ; HASWELL-NEXT: #APP 13969 ; HASWELL-NEXT: shldw %cl, %si, %di # sched: [6:1.00] 13970 ; HASWELL-NEXT: shrdw %cl, %si, %di # sched: [6:1.00] 13971 ; HASWELL-NEXT: shldw %cl, %si, (%rdx) # sched: [12:1.00] 13972 ; HASWELL-NEXT: shrdw %cl, %si, (%rdx) # sched: [12:1.00] 13973 ; HASWELL-NEXT: shldw $7, %si, %di # sched: [3:1.00] 13974 ; HASWELL-NEXT: shrdw $7, %si, %di # sched: [3:1.00] 13975 ; HASWELL-NEXT: shldw $7, %si, (%rdx) # sched: [10:1.00] 13976 ; HASWELL-NEXT: shrdw $7, %si, (%rdx) # sched: [10:1.00] 13977 ; HASWELL-NEXT: #NO_APP 13978 ; HASWELL-NEXT: retq # sched: [7:1.00] 13979 ; 13980 ; BROADWELL-LABEL: test_shld_shrd_16: 13981 ; BROADWELL: # %bb.0: 13982 ; BROADWELL-NEXT: #APP 13983 ; BROADWELL-NEXT: shldw %cl, %si, %di # sched: [6:1.00] 13984 ; BROADWELL-NEXT: shrdw %cl, %si, %di # sched: [6:1.00] 13985 ; BROADWELL-NEXT: shldw %cl, %si, (%rdx) # sched: [11:1.00] 13986 ; BROADWELL-NEXT: shrdw %cl, %si, (%rdx) # sched: [11:1.00] 13987 ; BROADWELL-NEXT: shldw $7, %si, %di # sched: [3:1.00] 13988 ; BROADWELL-NEXT: shrdw $7, %si, %di # sched: [3:1.00] 13989 ; BROADWELL-NEXT: shldw $7, %si, (%rdx) # sched: [9:1.00] 13990 ; BROADWELL-NEXT: shrdw $7, %si, (%rdx) # sched: [9:1.00] 13991 ; BROADWELL-NEXT: #NO_APP 13992 ; BROADWELL-NEXT: retq # sched: [7:1.00] 13993 ; 13994 ; SKYLAKE-LABEL: test_shld_shrd_16: 13995 ; SKYLAKE: # %bb.0: 13996 ; SKYLAKE-NEXT: #APP 13997 ; SKYLAKE-NEXT: shldw %cl, %si, %di # sched: [6:1.00] 13998 ; SKYLAKE-NEXT: shrdw %cl, %si, %di # sched: [6:1.00] 13999 ; SKYLAKE-NEXT: shldw %cl, %si, (%rdx) # sched: [11:1.00] 14000 ; SKYLAKE-NEXT: shrdw %cl, %si, (%rdx) # sched: [11:1.00] 14001 ; SKYLAKE-NEXT: shldw $7, %si, %di # sched: [3:1.00] 14002 ; SKYLAKE-NEXT: shrdw $7, %si, %di # sched: [3:1.00] 14003 ; SKYLAKE-NEXT: shldw $7, %si, (%rdx) # sched: [9:1.00] 14004 ; SKYLAKE-NEXT: shrdw $7, %si, (%rdx) # sched: [9:1.00] 14005 ; SKYLAKE-NEXT: #NO_APP 14006 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 14007 ; 14008 ; SKX-LABEL: test_shld_shrd_16: 14009 ; SKX: # %bb.0: 14010 ; SKX-NEXT: #APP 14011 ; SKX-NEXT: shldw %cl, %si, %di # sched: [6:1.00] 14012 ; SKX-NEXT: shrdw %cl, %si, %di # sched: [6:1.00] 14013 ; SKX-NEXT: shldw %cl, %si, (%rdx) # sched: [11:1.00] 14014 ; SKX-NEXT: shrdw %cl, %si, (%rdx) # sched: [11:1.00] 14015 ; SKX-NEXT: shldw $7, %si, %di # sched: [3:1.00] 14016 ; SKX-NEXT: shrdw $7, %si, %di # sched: [3:1.00] 14017 ; SKX-NEXT: shldw $7, %si, (%rdx) # sched: [9:1.00] 14018 ; SKX-NEXT: shrdw $7, %si, (%rdx) # sched: [9:1.00] 14019 ; SKX-NEXT: #NO_APP 14020 ; SKX-NEXT: retq # sched: [7:1.00] 14021 ; 14022 ; BTVER2-LABEL: test_shld_shrd_16: 14023 ; BTVER2: # %bb.0: 14024 ; BTVER2-NEXT: #APP 14025 ; BTVER2-NEXT: shldw %cl, %si, %di # sched: [4:4.00] 14026 ; BTVER2-NEXT: shrdw %cl, %si, %di # sched: [4:4.00] 14027 ; BTVER2-NEXT: shldw %cl, %si, (%rdx) # sched: [9:11.00] 14028 ; BTVER2-NEXT: shrdw %cl, %si, (%rdx) # sched: [9:11.00] 14029 ; BTVER2-NEXT: shldw $7, %si, %di # sched: [3:3.00] 14030 ; BTVER2-NEXT: shrdw $7, %si, %di # sched: [3:3.00] 14031 ; BTVER2-NEXT: shldw $7, %si, (%rdx) # sched: [9:11.00] 14032 ; BTVER2-NEXT: shrdw $7, %si, (%rdx) # sched: [9:11.00] 14033 ; BTVER2-NEXT: #NO_APP 14034 ; BTVER2-NEXT: retq # sched: [4:1.00] 14035 ; 14036 ; ZNVER1-LABEL: test_shld_shrd_16: 14037 ; ZNVER1: # %bb.0: 14038 ; ZNVER1-NEXT: #APP 14039 ; ZNVER1-NEXT: shldw %cl, %si, %di # sched: [100:0.25] 14040 ; ZNVER1-NEXT: shrdw %cl, %si, %di # sched: [100:0.25] 14041 ; ZNVER1-NEXT: shldw %cl, %si, (%rdx) # sched: [100:0.25] 14042 ; ZNVER1-NEXT: shrdw %cl, %si, (%rdx) # sched: [100:0.25] 14043 ; ZNVER1-NEXT: shldw $7, %si, %di # sched: [1:0.25] 14044 ; ZNVER1-NEXT: shrdw $7, %si, %di # sched: [1:0.25] 14045 ; ZNVER1-NEXT: shldw $7, %si, (%rdx) # sched: [5:0.50] 14046 ; ZNVER1-NEXT: shrdw $7, %si, (%rdx) # sched: [5:0.50] 14047 ; ZNVER1-NEXT: #NO_APP 14048 ; ZNVER1-NEXT: retq # sched: [1:0.50] 14049 call void asm sideeffect "shld $1, $0 \0A\09 shrd $1, $0 \0A\09 shld $1, $2 \0A\09 shrd $1, $2 \0A\09 shld $3, $1, $0 \0A\09 shrd $3, $1, $0 \0A\09 shld $3, $1, $2 \0A\09 shrd $3, $1, $2", "r,r,*m,i"(i16 %a0, i16 %a1, i16 *%a2, i8 7) 14050 ret void 14051 } 14052 define void @test_shld_shrd_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 14053 ; GENERIC-LABEL: test_shld_shrd_32: 14054 ; GENERIC: # %bb.0: 14055 ; GENERIC-NEXT: #APP 14056 ; GENERIC-NEXT: shldl %cl, %esi, %edi # sched: [4:1.50] 14057 ; GENERIC-NEXT: shrdl %cl, %esi, %edi # sched: [4:1.50] 14058 ; GENERIC-NEXT: shldl %cl, %esi, (%rdx) # sched: [10:1.50] 14059 ; GENERIC-NEXT: shrdl %cl, %esi, (%rdx) # sched: [10:1.50] 14060 ; GENERIC-NEXT: shldl $7, %esi, %edi # sched: [2:0.67] 14061 ; GENERIC-NEXT: shrdl $7, %esi, %edi # sched: [2:0.67] 14062 ; GENERIC-NEXT: shldl $7, %esi, (%rdx) # sched: [8:1.00] 14063 ; GENERIC-NEXT: shrdl $7, %esi, (%rdx) # sched: [8:1.00] 14064 ; GENERIC-NEXT: #NO_APP 14065 ; GENERIC-NEXT: retq # sched: [1:1.00] 14066 ; 14067 ; ATOM-LABEL: test_shld_shrd_32: 14068 ; ATOM: # %bb.0: 14069 ; ATOM-NEXT: #APP 14070 ; ATOM-NEXT: shldl %cl, %esi, %edi # sched: [2:1.00] 14071 ; ATOM-NEXT: shrdl %cl, %esi, %edi # sched: [2:1.00] 14072 ; ATOM-NEXT: shldl %cl, %esi, (%rdx) # sched: [4:2.00] 14073 ; ATOM-NEXT: shrdl %cl, %esi, (%rdx) # sched: [4:2.00] 14074 ; ATOM-NEXT: shldl $7, %esi, %edi # sched: [2:1.00] 14075 ; ATOM-NEXT: shrdl $7, %esi, %edi # sched: [2:1.00] 14076 ; ATOM-NEXT: shldl $7, %esi, (%rdx) # sched: [4:2.00] 14077 ; ATOM-NEXT: shrdl $7, %esi, (%rdx) # sched: [4:2.00] 14078 ; ATOM-NEXT: #NO_APP 14079 ; ATOM-NEXT: retq # sched: [79:39.50] 14080 ; 14081 ; SLM-LABEL: test_shld_shrd_32: 14082 ; SLM: # %bb.0: 14083 ; SLM-NEXT: #APP 14084 ; SLM-NEXT: shldl %cl, %esi, %edi # sched: [1:1.00] 14085 ; SLM-NEXT: shrdl %cl, %esi, %edi # sched: [1:1.00] 14086 ; SLM-NEXT: shldl %cl, %esi, (%rdx) # sched: [4:2.00] 14087 ; SLM-NEXT: shrdl %cl, %esi, (%rdx) # sched: [4:2.00] 14088 ; SLM-NEXT: shldl $7, %esi, %edi # sched: [1:1.00] 14089 ; SLM-NEXT: shrdl $7, %esi, %edi # sched: [1:1.00] 14090 ; SLM-NEXT: shldl $7, %esi, (%rdx) # sched: [4:2.00] 14091 ; SLM-NEXT: shrdl $7, %esi, (%rdx) # sched: [4:2.00] 14092 ; SLM-NEXT: #NO_APP 14093 ; SLM-NEXT: retq # sched: [4:1.00] 14094 ; 14095 ; SANDY-LABEL: test_shld_shrd_32: 14096 ; SANDY: # %bb.0: 14097 ; SANDY-NEXT: #APP 14098 ; SANDY-NEXT: shldl %cl, %esi, %edi # sched: [4:1.50] 14099 ; SANDY-NEXT: shrdl %cl, %esi, %edi # sched: [4:1.50] 14100 ; SANDY-NEXT: shldl %cl, %esi, (%rdx) # sched: [10:1.50] 14101 ; SANDY-NEXT: shrdl %cl, %esi, (%rdx) # sched: [10:1.50] 14102 ; SANDY-NEXT: shldl $7, %esi, %edi # sched: [2:0.67] 14103 ; SANDY-NEXT: shrdl $7, %esi, %edi # sched: [2:0.67] 14104 ; SANDY-NEXT: shldl $7, %esi, (%rdx) # sched: [8:1.00] 14105 ; SANDY-NEXT: shrdl $7, %esi, (%rdx) # sched: [8:1.00] 14106 ; SANDY-NEXT: #NO_APP 14107 ; SANDY-NEXT: retq # sched: [1:1.00] 14108 ; 14109 ; HASWELL-LABEL: test_shld_shrd_32: 14110 ; HASWELL: # %bb.0: 14111 ; HASWELL-NEXT: #APP 14112 ; HASWELL-NEXT: shldl %cl, %esi, %edi # sched: [6:1.00] 14113 ; HASWELL-NEXT: shrdl %cl, %esi, %edi # sched: [6:1.00] 14114 ; HASWELL-NEXT: shldl %cl, %esi, (%rdx) # sched: [12:1.00] 14115 ; HASWELL-NEXT: shrdl %cl, %esi, (%rdx) # sched: [12:1.00] 14116 ; HASWELL-NEXT: shldl $7, %esi, %edi # sched: [3:1.00] 14117 ; HASWELL-NEXT: shrdl $7, %esi, %edi # sched: [3:1.00] 14118 ; HASWELL-NEXT: shldl $7, %esi, (%rdx) # sched: [10:1.00] 14119 ; HASWELL-NEXT: shrdl $7, %esi, (%rdx) # sched: [10:1.00] 14120 ; HASWELL-NEXT: #NO_APP 14121 ; HASWELL-NEXT: retq # sched: [7:1.00] 14122 ; 14123 ; BROADWELL-LABEL: test_shld_shrd_32: 14124 ; BROADWELL: # %bb.0: 14125 ; BROADWELL-NEXT: #APP 14126 ; BROADWELL-NEXT: shldl %cl, %esi, %edi # sched: [6:1.00] 14127 ; BROADWELL-NEXT: shrdl %cl, %esi, %edi # sched: [6:1.00] 14128 ; BROADWELL-NEXT: shldl %cl, %esi, (%rdx) # sched: [11:1.00] 14129 ; BROADWELL-NEXT: shrdl %cl, %esi, (%rdx) # sched: [11:1.00] 14130 ; BROADWELL-NEXT: shldl $7, %esi, %edi # sched: [3:1.00] 14131 ; BROADWELL-NEXT: shrdl $7, %esi, %edi # sched: [3:1.00] 14132 ; BROADWELL-NEXT: shldl $7, %esi, (%rdx) # sched: [9:1.00] 14133 ; BROADWELL-NEXT: shrdl $7, %esi, (%rdx) # sched: [9:1.00] 14134 ; BROADWELL-NEXT: #NO_APP 14135 ; BROADWELL-NEXT: retq # sched: [7:1.00] 14136 ; 14137 ; SKYLAKE-LABEL: test_shld_shrd_32: 14138 ; SKYLAKE: # %bb.0: 14139 ; SKYLAKE-NEXT: #APP 14140 ; SKYLAKE-NEXT: shldl %cl, %esi, %edi # sched: [6:1.00] 14141 ; SKYLAKE-NEXT: shrdl %cl, %esi, %edi # sched: [6:1.00] 14142 ; SKYLAKE-NEXT: shldl %cl, %esi, (%rdx) # sched: [11:1.00] 14143 ; SKYLAKE-NEXT: shrdl %cl, %esi, (%rdx) # sched: [11:1.00] 14144 ; SKYLAKE-NEXT: shldl $7, %esi, %edi # sched: [3:1.00] 14145 ; SKYLAKE-NEXT: shrdl $7, %esi, %edi # sched: [3:1.00] 14146 ; SKYLAKE-NEXT: shldl $7, %esi, (%rdx) # sched: [9:1.00] 14147 ; SKYLAKE-NEXT: shrdl $7, %esi, (%rdx) # sched: [9:1.00] 14148 ; SKYLAKE-NEXT: #NO_APP 14149 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 14150 ; 14151 ; SKX-LABEL: test_shld_shrd_32: 14152 ; SKX: # %bb.0: 14153 ; SKX-NEXT: #APP 14154 ; SKX-NEXT: shldl %cl, %esi, %edi # sched: [6:1.00] 14155 ; SKX-NEXT: shrdl %cl, %esi, %edi # sched: [6:1.00] 14156 ; SKX-NEXT: shldl %cl, %esi, (%rdx) # sched: [11:1.00] 14157 ; SKX-NEXT: shrdl %cl, %esi, (%rdx) # sched: [11:1.00] 14158 ; SKX-NEXT: shldl $7, %esi, %edi # sched: [3:1.00] 14159 ; SKX-NEXT: shrdl $7, %esi, %edi # sched: [3:1.00] 14160 ; SKX-NEXT: shldl $7, %esi, (%rdx) # sched: [9:1.00] 14161 ; SKX-NEXT: shrdl $7, %esi, (%rdx) # sched: [9:1.00] 14162 ; SKX-NEXT: #NO_APP 14163 ; SKX-NEXT: retq # sched: [7:1.00] 14164 ; 14165 ; BTVER2-LABEL: test_shld_shrd_32: 14166 ; BTVER2: # %bb.0: 14167 ; BTVER2-NEXT: #APP 14168 ; BTVER2-NEXT: shldl %cl, %esi, %edi # sched: [4:4.00] 14169 ; BTVER2-NEXT: shrdl %cl, %esi, %edi # sched: [4:4.00] 14170 ; BTVER2-NEXT: shldl %cl, %esi, (%rdx) # sched: [9:11.00] 14171 ; BTVER2-NEXT: shrdl %cl, %esi, (%rdx) # sched: [9:11.00] 14172 ; BTVER2-NEXT: shldl $7, %esi, %edi # sched: [3:3.00] 14173 ; BTVER2-NEXT: shrdl $7, %esi, %edi # sched: [3:3.00] 14174 ; BTVER2-NEXT: shldl $7, %esi, (%rdx) # sched: [9:11.00] 14175 ; BTVER2-NEXT: shrdl $7, %esi, (%rdx) # sched: [9:11.00] 14176 ; BTVER2-NEXT: #NO_APP 14177 ; BTVER2-NEXT: retq # sched: [4:1.00] 14178 ; 14179 ; ZNVER1-LABEL: test_shld_shrd_32: 14180 ; ZNVER1: # %bb.0: 14181 ; ZNVER1-NEXT: #APP 14182 ; ZNVER1-NEXT: shldl %cl, %esi, %edi # sched: [100:0.25] 14183 ; ZNVER1-NEXT: shrdl %cl, %esi, %edi # sched: [100:0.25] 14184 ; ZNVER1-NEXT: shldl %cl, %esi, (%rdx) # sched: [100:0.25] 14185 ; ZNVER1-NEXT: shrdl %cl, %esi, (%rdx) # sched: [100:0.25] 14186 ; ZNVER1-NEXT: shldl $7, %esi, %edi # sched: [1:0.25] 14187 ; ZNVER1-NEXT: shrdl $7, %esi, %edi # sched: [1:0.25] 14188 ; ZNVER1-NEXT: shldl $7, %esi, (%rdx) # sched: [5:0.50] 14189 ; ZNVER1-NEXT: shrdl $7, %esi, (%rdx) # sched: [5:0.50] 14190 ; ZNVER1-NEXT: #NO_APP 14191 ; ZNVER1-NEXT: retq # sched: [1:0.50] 14192 call void asm sideeffect "shld $1, $0 \0A\09 shrd $1, $0 \0A\09 shld $1, $2 \0A\09 shrd $1, $2 \0A\09 shld $3, $1, $0 \0A\09 shrd $3, $1, $0 \0A\09 shld $3, $1, $2 \0A\09 shrd $3, $1, $2", "r,r,*m,i"(i32 %a0, i32 %a1, i32 *%a2, i8 7) 14193 ret void 14194 } 14195 define void @test_shld_shrd_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 14196 ; GENERIC-LABEL: test_shld_shrd_64: 14197 ; GENERIC: # %bb.0: 14198 ; GENERIC-NEXT: #APP 14199 ; GENERIC-NEXT: shldq %cl, %rsi, %rdi # sched: [4:1.50] 14200 ; GENERIC-NEXT: shrdq %cl, %rsi, %rdi # sched: [4:1.50] 14201 ; GENERIC-NEXT: shldq %cl, %rsi, (%rdx) # sched: [10:1.50] 14202 ; GENERIC-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [10:1.50] 14203 ; GENERIC-NEXT: shldq $7, %rsi, %rdi # sched: [2:0.67] 14204 ; GENERIC-NEXT: shrdq $7, %rsi, %rdi # sched: [2:0.67] 14205 ; GENERIC-NEXT: shldq $7, %rsi, (%rdx) # sched: [8:1.00] 14206 ; GENERIC-NEXT: shrdq $7, %rsi, (%rdx) # sched: [8:1.00] 14207 ; GENERIC-NEXT: #NO_APP 14208 ; GENERIC-NEXT: retq # sched: [1:1.00] 14209 ; 14210 ; ATOM-LABEL: test_shld_shrd_64: 14211 ; ATOM: # %bb.0: 14212 ; ATOM-NEXT: #APP 14213 ; ATOM-NEXT: shldq %cl, %rsi, %rdi # sched: [8:4.00] 14214 ; ATOM-NEXT: shrdq %cl, %rsi, %rdi # sched: [8:4.00] 14215 ; ATOM-NEXT: shldq %cl, %rsi, (%rdx) # sched: [9:4.50] 14216 ; ATOM-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [9:4.50] 14217 ; ATOM-NEXT: shldq $7, %rsi, %rdi # sched: [9:4.50] 14218 ; ATOM-NEXT: shrdq $7, %rsi, %rdi # sched: [9:4.50] 14219 ; ATOM-NEXT: shldq $7, %rsi, (%rdx) # sched: [9:4.50] 14220 ; ATOM-NEXT: shrdq $7, %rsi, (%rdx) # sched: [9:4.50] 14221 ; ATOM-NEXT: #NO_APP 14222 ; ATOM-NEXT: retq # sched: [79:39.50] 14223 ; 14224 ; SLM-LABEL: test_shld_shrd_64: 14225 ; SLM: # %bb.0: 14226 ; SLM-NEXT: #APP 14227 ; SLM-NEXT: shldq %cl, %rsi, %rdi # sched: [1:1.00] 14228 ; SLM-NEXT: shrdq %cl, %rsi, %rdi # sched: [1:1.00] 14229 ; SLM-NEXT: shldq %cl, %rsi, (%rdx) # sched: [4:2.00] 14230 ; SLM-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [4:2.00] 14231 ; SLM-NEXT: shldq $7, %rsi, %rdi # sched: [1:1.00] 14232 ; SLM-NEXT: shrdq $7, %rsi, %rdi # sched: [1:1.00] 14233 ; SLM-NEXT: shldq $7, %rsi, (%rdx) # sched: [4:2.00] 14234 ; SLM-NEXT: shrdq $7, %rsi, (%rdx) # sched: [4:2.00] 14235 ; SLM-NEXT: #NO_APP 14236 ; SLM-NEXT: retq # sched: [4:1.00] 14237 ; 14238 ; SANDY-LABEL: test_shld_shrd_64: 14239 ; SANDY: # %bb.0: 14240 ; SANDY-NEXT: #APP 14241 ; SANDY-NEXT: shldq %cl, %rsi, %rdi # sched: [4:1.50] 14242 ; SANDY-NEXT: shrdq %cl, %rsi, %rdi # sched: [4:1.50] 14243 ; SANDY-NEXT: shldq %cl, %rsi, (%rdx) # sched: [10:1.50] 14244 ; SANDY-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [10:1.50] 14245 ; SANDY-NEXT: shldq $7, %rsi, %rdi # sched: [2:0.67] 14246 ; SANDY-NEXT: shrdq $7, %rsi, %rdi # sched: [2:0.67] 14247 ; SANDY-NEXT: shldq $7, %rsi, (%rdx) # sched: [8:1.00] 14248 ; SANDY-NEXT: shrdq $7, %rsi, (%rdx) # sched: [8:1.00] 14249 ; SANDY-NEXT: #NO_APP 14250 ; SANDY-NEXT: retq # sched: [1:1.00] 14251 ; 14252 ; HASWELL-LABEL: test_shld_shrd_64: 14253 ; HASWELL: # %bb.0: 14254 ; HASWELL-NEXT: #APP 14255 ; HASWELL-NEXT: shldq %cl, %rsi, %rdi # sched: [6:1.00] 14256 ; HASWELL-NEXT: shrdq %cl, %rsi, %rdi # sched: [6:1.00] 14257 ; HASWELL-NEXT: shldq %cl, %rsi, (%rdx) # sched: [12:1.00] 14258 ; HASWELL-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [12:1.00] 14259 ; HASWELL-NEXT: shldq $7, %rsi, %rdi # sched: [3:1.00] 14260 ; HASWELL-NEXT: shrdq $7, %rsi, %rdi # sched: [3:1.00] 14261 ; HASWELL-NEXT: shldq $7, %rsi, (%rdx) # sched: [10:1.00] 14262 ; HASWELL-NEXT: shrdq $7, %rsi, (%rdx) # sched: [10:1.00] 14263 ; HASWELL-NEXT: #NO_APP 14264 ; HASWELL-NEXT: retq # sched: [7:1.00] 14265 ; 14266 ; BROADWELL-LABEL: test_shld_shrd_64: 14267 ; BROADWELL: # %bb.0: 14268 ; BROADWELL-NEXT: #APP 14269 ; BROADWELL-NEXT: shldq %cl, %rsi, %rdi # sched: [6:1.00] 14270 ; BROADWELL-NEXT: shrdq %cl, %rsi, %rdi # sched: [6:1.00] 14271 ; BROADWELL-NEXT: shldq %cl, %rsi, (%rdx) # sched: [11:1.00] 14272 ; BROADWELL-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [11:1.00] 14273 ; BROADWELL-NEXT: shldq $7, %rsi, %rdi # sched: [3:1.00] 14274 ; BROADWELL-NEXT: shrdq $7, %rsi, %rdi # sched: [3:1.00] 14275 ; BROADWELL-NEXT: shldq $7, %rsi, (%rdx) # sched: [9:1.00] 14276 ; BROADWELL-NEXT: shrdq $7, %rsi, (%rdx) # sched: [9:1.00] 14277 ; BROADWELL-NEXT: #NO_APP 14278 ; BROADWELL-NEXT: retq # sched: [7:1.00] 14279 ; 14280 ; SKYLAKE-LABEL: test_shld_shrd_64: 14281 ; SKYLAKE: # %bb.0: 14282 ; SKYLAKE-NEXT: #APP 14283 ; SKYLAKE-NEXT: shldq %cl, %rsi, %rdi # sched: [6:1.00] 14284 ; SKYLAKE-NEXT: shrdq %cl, %rsi, %rdi # sched: [6:1.00] 14285 ; SKYLAKE-NEXT: shldq %cl, %rsi, (%rdx) # sched: [11:1.00] 14286 ; SKYLAKE-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [11:1.00] 14287 ; SKYLAKE-NEXT: shldq $7, %rsi, %rdi # sched: [3:1.00] 14288 ; SKYLAKE-NEXT: shrdq $7, %rsi, %rdi # sched: [3:1.00] 14289 ; SKYLAKE-NEXT: shldq $7, %rsi, (%rdx) # sched: [9:1.00] 14290 ; SKYLAKE-NEXT: shrdq $7, %rsi, (%rdx) # sched: [9:1.00] 14291 ; SKYLAKE-NEXT: #NO_APP 14292 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 14293 ; 14294 ; SKX-LABEL: test_shld_shrd_64: 14295 ; SKX: # %bb.0: 14296 ; SKX-NEXT: #APP 14297 ; SKX-NEXT: shldq %cl, %rsi, %rdi # sched: [6:1.00] 14298 ; SKX-NEXT: shrdq %cl, %rsi, %rdi # sched: [6:1.00] 14299 ; SKX-NEXT: shldq %cl, %rsi, (%rdx) # sched: [11:1.00] 14300 ; SKX-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [11:1.00] 14301 ; SKX-NEXT: shldq $7, %rsi, %rdi # sched: [3:1.00] 14302 ; SKX-NEXT: shrdq $7, %rsi, %rdi # sched: [3:1.00] 14303 ; SKX-NEXT: shldq $7, %rsi, (%rdx) # sched: [9:1.00] 14304 ; SKX-NEXT: shrdq $7, %rsi, (%rdx) # sched: [9:1.00] 14305 ; SKX-NEXT: #NO_APP 14306 ; SKX-NEXT: retq # sched: [7:1.00] 14307 ; 14308 ; BTVER2-LABEL: test_shld_shrd_64: 14309 ; BTVER2: # %bb.0: 14310 ; BTVER2-NEXT: #APP 14311 ; BTVER2-NEXT: shldq %cl, %rsi, %rdi # sched: [4:4.00] 14312 ; BTVER2-NEXT: shrdq %cl, %rsi, %rdi # sched: [4:4.00] 14313 ; BTVER2-NEXT: shldq %cl, %rsi, (%rdx) # sched: [9:11.00] 14314 ; BTVER2-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [9:11.00] 14315 ; BTVER2-NEXT: shldq $7, %rsi, %rdi # sched: [3:3.00] 14316 ; BTVER2-NEXT: shrdq $7, %rsi, %rdi # sched: [3:3.00] 14317 ; BTVER2-NEXT: shldq $7, %rsi, (%rdx) # sched: [9:11.00] 14318 ; BTVER2-NEXT: shrdq $7, %rsi, (%rdx) # sched: [9:11.00] 14319 ; BTVER2-NEXT: #NO_APP 14320 ; BTVER2-NEXT: retq # sched: [4:1.00] 14321 ; 14322 ; ZNVER1-LABEL: test_shld_shrd_64: 14323 ; ZNVER1: # %bb.0: 14324 ; ZNVER1-NEXT: #APP 14325 ; ZNVER1-NEXT: shldq %cl, %rsi, %rdi # sched: [100:0.25] 14326 ; ZNVER1-NEXT: shrdq %cl, %rsi, %rdi # sched: [100:0.25] 14327 ; ZNVER1-NEXT: shldq %cl, %rsi, (%rdx) # sched: [100:0.25] 14328 ; ZNVER1-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [100:0.25] 14329 ; ZNVER1-NEXT: shldq $7, %rsi, %rdi # sched: [1:0.25] 14330 ; ZNVER1-NEXT: shrdq $7, %rsi, %rdi # sched: [1:0.25] 14331 ; ZNVER1-NEXT: shldq $7, %rsi, (%rdx) # sched: [5:0.50] 14332 ; ZNVER1-NEXT: shrdq $7, %rsi, (%rdx) # sched: [5:0.50] 14333 ; ZNVER1-NEXT: #NO_APP 14334 ; ZNVER1-NEXT: retq # sched: [1:0.50] 14335 call void asm sideeffect "shld $1, $0 \0A\09 shrd $1, $0 \0A\09 shld $1, $2 \0A\09 shrd $1, $2 \0A\09 shld $3, $1, $0 \0A\09 shrd $3, $1, $0 \0A\09 shld $3, $1, $2 \0A\09 shrd $3, $1, $2", "r,r,*m,i"(i64 %a0, i64 %a1, i64 *%a2, i8 7) 14336 ret void 14337 } 14338 14339 ; TODO - test_sidt 14340 ; TODO - test_sldt 14341 ; TODO - test_smsw 14342 14343 define void @test_stc_std() optsize { 14344 ; GENERIC-LABEL: test_stc_std: 14345 ; GENERIC: # %bb.0: 14346 ; GENERIC-NEXT: #APP 14347 ; GENERIC-NEXT: stc # sched: [1:0.33] 14348 ; GENERIC-NEXT: std # sched: [1:0.33] 14349 ; GENERIC-NEXT: #NO_APP 14350 ; GENERIC-NEXT: retq # sched: [1:1.00] 14351 ; 14352 ; ATOM-LABEL: test_stc_std: 14353 ; ATOM: # %bb.0: 14354 ; ATOM-NEXT: #APP 14355 ; ATOM-NEXT: stc # sched: [1:0.50] 14356 ; ATOM-NEXT: std # sched: [21:10.50] 14357 ; ATOM-NEXT: #NO_APP 14358 ; ATOM-NEXT: retq # sched: [79:39.50] 14359 ; 14360 ; SLM-LABEL: test_stc_std: 14361 ; SLM: # %bb.0: 14362 ; SLM-NEXT: #APP 14363 ; SLM-NEXT: stc # sched: [1:0.50] 14364 ; SLM-NEXT: std # sched: [1:0.50] 14365 ; SLM-NEXT: #NO_APP 14366 ; SLM-NEXT: retq # sched: [4:1.00] 14367 ; 14368 ; SANDY-LABEL: test_stc_std: 14369 ; SANDY: # %bb.0: 14370 ; SANDY-NEXT: #APP 14371 ; SANDY-NEXT: stc # sched: [1:0.33] 14372 ; SANDY-NEXT: std # sched: [1:0.33] 14373 ; SANDY-NEXT: #NO_APP 14374 ; SANDY-NEXT: retq # sched: [1:1.00] 14375 ; 14376 ; HASWELL-LABEL: test_stc_std: 14377 ; HASWELL: # %bb.0: 14378 ; HASWELL-NEXT: #APP 14379 ; HASWELL-NEXT: stc # sched: [1:0.25] 14380 ; HASWELL-NEXT: std # sched: [6:1.50] 14381 ; HASWELL-NEXT: #NO_APP 14382 ; HASWELL-NEXT: retq # sched: [7:1.00] 14383 ; 14384 ; BROADWELL-LABEL: test_stc_std: 14385 ; BROADWELL: # %bb.0: 14386 ; BROADWELL-NEXT: #APP 14387 ; BROADWELL-NEXT: stc # sched: [1:0.25] 14388 ; BROADWELL-NEXT: std # sched: [6:1.50] 14389 ; BROADWELL-NEXT: #NO_APP 14390 ; BROADWELL-NEXT: retq # sched: [7:1.00] 14391 ; 14392 ; SKYLAKE-LABEL: test_stc_std: 14393 ; SKYLAKE: # %bb.0: 14394 ; SKYLAKE-NEXT: #APP 14395 ; SKYLAKE-NEXT: stc # sched: [1:0.25] 14396 ; SKYLAKE-NEXT: std # sched: [6:1.50] 14397 ; SKYLAKE-NEXT: #NO_APP 14398 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 14399 ; 14400 ; SKX-LABEL: test_stc_std: 14401 ; SKX: # %bb.0: 14402 ; SKX-NEXT: #APP 14403 ; SKX-NEXT: stc # sched: [1:0.25] 14404 ; SKX-NEXT: std # sched: [6:1.50] 14405 ; SKX-NEXT: #NO_APP 14406 ; SKX-NEXT: retq # sched: [7:1.00] 14407 ; 14408 ; BTVER2-LABEL: test_stc_std: 14409 ; BTVER2: # %bb.0: 14410 ; BTVER2-NEXT: #APP 14411 ; BTVER2-NEXT: stc # sched: [1:0.50] 14412 ; BTVER2-NEXT: std # sched: [1:0.50] 14413 ; BTVER2-NEXT: #NO_APP 14414 ; BTVER2-NEXT: retq # sched: [4:1.00] 14415 ; 14416 ; ZNVER1-LABEL: test_stc_std: 14417 ; ZNVER1: # %bb.0: 14418 ; ZNVER1-NEXT: #APP 14419 ; ZNVER1-NEXT: stc # sched: [1:0.25] 14420 ; ZNVER1-NEXT: std # sched: [1:0.25] 14421 ; ZNVER1-NEXT: #NO_APP 14422 ; ZNVER1-NEXT: retq # sched: [1:0.50] 14423 call void asm sideeffect "stc \0A\09 std", ""() 14424 ret void 14425 } 14426 14427 ; TODO - test_sti 14428 ; TODO - test_stgi 14429 14430 define void @test_stos() optsize { 14431 ; GENERIC-LABEL: test_stos: 14432 ; GENERIC: # %bb.0: 14433 ; GENERIC-NEXT: #APP 14434 ; GENERIC-NEXT: stosb %al, %es:(%rdi) # sched: [5:1.00] 14435 ; GENERIC-NEXT: stosw %ax, %es:(%rdi) # sched: [5:1.00] 14436 ; GENERIC-NEXT: stosl %eax, %es:(%rdi) # sched: [5:1.00] 14437 ; GENERIC-NEXT: stosq %rax, %es:(%rdi) # sched: [5:1.00] 14438 ; GENERIC-NEXT: #NO_APP 14439 ; GENERIC-NEXT: retq # sched: [1:1.00] 14440 ; 14441 ; ATOM-LABEL: test_stos: 14442 ; ATOM: # %bb.0: 14443 ; ATOM-NEXT: #APP 14444 ; ATOM-NEXT: stosb %al, %es:(%rdi) # sched: [1:0.50] 14445 ; ATOM-NEXT: stosw %ax, %es:(%rdi) # sched: [1:0.50] 14446 ; ATOM-NEXT: stosl %eax, %es:(%rdi) # sched: [1:0.50] 14447 ; ATOM-NEXT: stosq %rax, %es:(%rdi) # sched: [1:0.50] 14448 ; ATOM-NEXT: #NO_APP 14449 ; ATOM-NEXT: retq # sched: [79:39.50] 14450 ; 14451 ; SLM-LABEL: test_stos: 14452 ; SLM: # %bb.0: 14453 ; SLM-NEXT: #APP 14454 ; SLM-NEXT: stosb %al, %es:(%rdi) # sched: [100:1.00] 14455 ; SLM-NEXT: stosw %ax, %es:(%rdi) # sched: [100:1.00] 14456 ; SLM-NEXT: stosl %eax, %es:(%rdi) # sched: [100:1.00] 14457 ; SLM-NEXT: stosq %rax, %es:(%rdi) # sched: [100:1.00] 14458 ; SLM-NEXT: #NO_APP 14459 ; SLM-NEXT: retq # sched: [4:1.00] 14460 ; 14461 ; SANDY-LABEL: test_stos: 14462 ; SANDY: # %bb.0: 14463 ; SANDY-NEXT: #APP 14464 ; SANDY-NEXT: stosb %al, %es:(%rdi) # sched: [5:1.00] 14465 ; SANDY-NEXT: stosw %ax, %es:(%rdi) # sched: [5:1.00] 14466 ; SANDY-NEXT: stosl %eax, %es:(%rdi) # sched: [5:1.00] 14467 ; SANDY-NEXT: stosq %rax, %es:(%rdi) # sched: [5:1.00] 14468 ; SANDY-NEXT: #NO_APP 14469 ; SANDY-NEXT: retq # sched: [1:1.00] 14470 ; 14471 ; HASWELL-LABEL: test_stos: 14472 ; HASWELL: # %bb.0: 14473 ; HASWELL-NEXT: #APP 14474 ; HASWELL-NEXT: stosb %al, %es:(%rdi) # sched: [2:1.00] 14475 ; HASWELL-NEXT: stosw %ax, %es:(%rdi) # sched: [2:1.00] 14476 ; HASWELL-NEXT: stosl %eax, %es:(%rdi) # sched: [2:1.00] 14477 ; HASWELL-NEXT: stosq %rax, %es:(%rdi) # sched: [2:1.00] 14478 ; HASWELL-NEXT: #NO_APP 14479 ; HASWELL-NEXT: retq # sched: [7:1.00] 14480 ; 14481 ; BROADWELL-LABEL: test_stos: 14482 ; BROADWELL: # %bb.0: 14483 ; BROADWELL-NEXT: #APP 14484 ; BROADWELL-NEXT: stosb %al, %es:(%rdi) # sched: [2:1.00] 14485 ; BROADWELL-NEXT: stosw %ax, %es:(%rdi) # sched: [2:1.00] 14486 ; BROADWELL-NEXT: stosl %eax, %es:(%rdi) # sched: [2:1.00] 14487 ; BROADWELL-NEXT: stosq %rax, %es:(%rdi) # sched: [2:1.00] 14488 ; BROADWELL-NEXT: #NO_APP 14489 ; BROADWELL-NEXT: retq # sched: [7:1.00] 14490 ; 14491 ; SKYLAKE-LABEL: test_stos: 14492 ; SKYLAKE: # %bb.0: 14493 ; SKYLAKE-NEXT: #APP 14494 ; SKYLAKE-NEXT: stosb %al, %es:(%rdi) # sched: [2:1.00] 14495 ; SKYLAKE-NEXT: stosw %ax, %es:(%rdi) # sched: [2:1.00] 14496 ; SKYLAKE-NEXT: stosl %eax, %es:(%rdi) # sched: [2:1.00] 14497 ; SKYLAKE-NEXT: stosq %rax, %es:(%rdi) # sched: [2:1.00] 14498 ; SKYLAKE-NEXT: #NO_APP 14499 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 14500 ; 14501 ; SKX-LABEL: test_stos: 14502 ; SKX: # %bb.0: 14503 ; SKX-NEXT: #APP 14504 ; SKX-NEXT: stosb %al, %es:(%rdi) # sched: [2:1.00] 14505 ; SKX-NEXT: stosw %ax, %es:(%rdi) # sched: [2:1.00] 14506 ; SKX-NEXT: stosl %eax, %es:(%rdi) # sched: [2:1.00] 14507 ; SKX-NEXT: stosq %rax, %es:(%rdi) # sched: [2:1.00] 14508 ; SKX-NEXT: #NO_APP 14509 ; SKX-NEXT: retq # sched: [7:1.00] 14510 ; 14511 ; BTVER2-LABEL: test_stos: 14512 ; BTVER2: # %bb.0: 14513 ; BTVER2-NEXT: #APP 14514 ; BTVER2-NEXT: stosb %al, %es:(%rdi) # sched: [100:0.50] 14515 ; BTVER2-NEXT: stosw %ax, %es:(%rdi) # sched: [100:0.50] 14516 ; BTVER2-NEXT: stosl %eax, %es:(%rdi) # sched: [100:0.50] 14517 ; BTVER2-NEXT: stosq %rax, %es:(%rdi) # sched: [100:0.50] 14518 ; BTVER2-NEXT: #NO_APP 14519 ; BTVER2-NEXT: retq # sched: [4:1.00] 14520 ; 14521 ; ZNVER1-LABEL: test_stos: 14522 ; ZNVER1: # %bb.0: 14523 ; ZNVER1-NEXT: #APP 14524 ; ZNVER1-NEXT: stosb %al, %es:(%rdi) # sched: [100:0.25] 14525 ; ZNVER1-NEXT: stosw %ax, %es:(%rdi) # sched: [100:0.25] 14526 ; ZNVER1-NEXT: stosl %eax, %es:(%rdi) # sched: [100:0.25] 14527 ; ZNVER1-NEXT: stosq %rax, %es:(%rdi) # sched: [100:0.25] 14528 ; ZNVER1-NEXT: #NO_APP 14529 ; ZNVER1-NEXT: retq # sched: [1:0.50] 14530 call void asm sideeffect "stosb \0A\09 stosw \0A\09 stosl \0A\09 stosq", ""() 14531 ret void 14532 } 14533 14534 ; TODO - test_str 14535 14536 define void @test_sub_8(i8 %a0, i8* %a1, i8 %a2) optsize { 14537 ; GENERIC-LABEL: test_sub_8: 14538 ; GENERIC: # %bb.0: 14539 ; GENERIC-NEXT: #APP 14540 ; GENERIC-NEXT: subb $7, %al # sched: [1:0.33] 14541 ; GENERIC-NEXT: subb $7, %dil # sched: [1:0.33] 14542 ; GENERIC-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14543 ; GENERIC-NEXT: subb %dl, %dil # sched: [1:0.33] 14544 ; GENERIC-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14545 ; GENERIC-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14546 ; GENERIC-NEXT: #NO_APP 14547 ; GENERIC-NEXT: retq # sched: [1:1.00] 14548 ; 14549 ; ATOM-LABEL: test_sub_8: 14550 ; ATOM: # %bb.0: 14551 ; ATOM-NEXT: #APP 14552 ; ATOM-NEXT: subb $7, %al # sched: [1:0.50] 14553 ; ATOM-NEXT: subb $7, %dil # sched: [1:0.50] 14554 ; ATOM-NEXT: subb $7, (%rsi) # sched: [1:1.00] 14555 ; ATOM-NEXT: subb %dl, %dil # sched: [1:0.50] 14556 ; ATOM-NEXT: subb %dil, (%rsi) # sched: [1:1.00] 14557 ; ATOM-NEXT: subb (%rsi), %dil # sched: [1:1.00] 14558 ; ATOM-NEXT: #NO_APP 14559 ; ATOM-NEXT: retq # sched: [79:39.50] 14560 ; 14561 ; SLM-LABEL: test_sub_8: 14562 ; SLM: # %bb.0: 14563 ; SLM-NEXT: #APP 14564 ; SLM-NEXT: subb $7, %al # sched: [1:0.50] 14565 ; SLM-NEXT: subb $7, %dil # sched: [1:0.50] 14566 ; SLM-NEXT: subb $7, (%rsi) # sched: [5:2.00] 14567 ; SLM-NEXT: subb %dl, %dil # sched: [1:0.50] 14568 ; SLM-NEXT: subb %dil, (%rsi) # sched: [5:2.00] 14569 ; SLM-NEXT: subb (%rsi), %dil # sched: [4:1.00] 14570 ; SLM-NEXT: #NO_APP 14571 ; SLM-NEXT: retq # sched: [4:1.00] 14572 ; 14573 ; SANDY-LABEL: test_sub_8: 14574 ; SANDY: # %bb.0: 14575 ; SANDY-NEXT: #APP 14576 ; SANDY-NEXT: subb $7, %al # sched: [1:0.33] 14577 ; SANDY-NEXT: subb $7, %dil # sched: [1:0.33] 14578 ; SANDY-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14579 ; SANDY-NEXT: subb %dl, %dil # sched: [1:0.33] 14580 ; SANDY-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14581 ; SANDY-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14582 ; SANDY-NEXT: #NO_APP 14583 ; SANDY-NEXT: retq # sched: [1:1.00] 14584 ; 14585 ; HASWELL-LABEL: test_sub_8: 14586 ; HASWELL: # %bb.0: 14587 ; HASWELL-NEXT: #APP 14588 ; HASWELL-NEXT: subb $7, %al # sched: [1:0.25] 14589 ; HASWELL-NEXT: subb $7, %dil # sched: [1:0.25] 14590 ; HASWELL-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14591 ; HASWELL-NEXT: subb %dl, %dil # sched: [1:0.25] 14592 ; HASWELL-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14593 ; HASWELL-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14594 ; HASWELL-NEXT: #NO_APP 14595 ; HASWELL-NEXT: retq # sched: [7:1.00] 14596 ; 14597 ; BROADWELL-LABEL: test_sub_8: 14598 ; BROADWELL: # %bb.0: 14599 ; BROADWELL-NEXT: #APP 14600 ; BROADWELL-NEXT: subb $7, %al # sched: [1:0.25] 14601 ; BROADWELL-NEXT: subb $7, %dil # sched: [1:0.25] 14602 ; BROADWELL-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14603 ; BROADWELL-NEXT: subb %dl, %dil # sched: [1:0.25] 14604 ; BROADWELL-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14605 ; BROADWELL-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14606 ; BROADWELL-NEXT: #NO_APP 14607 ; BROADWELL-NEXT: retq # sched: [7:1.00] 14608 ; 14609 ; SKYLAKE-LABEL: test_sub_8: 14610 ; SKYLAKE: # %bb.0: 14611 ; SKYLAKE-NEXT: #APP 14612 ; SKYLAKE-NEXT: subb $7, %al # sched: [1:0.25] 14613 ; SKYLAKE-NEXT: subb $7, %dil # sched: [1:0.25] 14614 ; SKYLAKE-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14615 ; SKYLAKE-NEXT: subb %dl, %dil # sched: [1:0.25] 14616 ; SKYLAKE-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14617 ; SKYLAKE-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14618 ; SKYLAKE-NEXT: #NO_APP 14619 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 14620 ; 14621 ; SKX-LABEL: test_sub_8: 14622 ; SKX: # %bb.0: 14623 ; SKX-NEXT: #APP 14624 ; SKX-NEXT: subb $7, %al # sched: [1:0.25] 14625 ; SKX-NEXT: subb $7, %dil # sched: [1:0.25] 14626 ; SKX-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14627 ; SKX-NEXT: subb %dl, %dil # sched: [1:0.25] 14628 ; SKX-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14629 ; SKX-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14630 ; SKX-NEXT: #NO_APP 14631 ; SKX-NEXT: retq # sched: [7:1.00] 14632 ; 14633 ; BTVER2-LABEL: test_sub_8: 14634 ; BTVER2: # %bb.0: 14635 ; BTVER2-NEXT: #APP 14636 ; BTVER2-NEXT: subb $7, %al # sched: [1:0.50] 14637 ; BTVER2-NEXT: subb $7, %dil # sched: [1:0.50] 14638 ; BTVER2-NEXT: subb $7, (%rsi) # sched: [5:1.00] 14639 ; BTVER2-NEXT: subb %dl, %dil # sched: [1:0.50] 14640 ; BTVER2-NEXT: subb %dil, (%rsi) # sched: [5:1.00] 14641 ; BTVER2-NEXT: subb (%rsi), %dil # sched: [4:1.00] 14642 ; BTVER2-NEXT: #NO_APP 14643 ; BTVER2-NEXT: retq # sched: [4:1.00] 14644 ; 14645 ; ZNVER1-LABEL: test_sub_8: 14646 ; ZNVER1: # %bb.0: 14647 ; ZNVER1-NEXT: #APP 14648 ; ZNVER1-NEXT: subb $7, %al # sched: [1:0.25] 14649 ; ZNVER1-NEXT: subb $7, %dil # sched: [1:0.25] 14650 ; ZNVER1-NEXT: subb $7, (%rsi) # sched: [5:0.50] 14651 ; ZNVER1-NEXT: subb %dl, %dil # sched: [1:0.25] 14652 ; ZNVER1-NEXT: subb %dil, (%rsi) # sched: [5:0.50] 14653 ; ZNVER1-NEXT: subb (%rsi), %dil # sched: [5:0.50] 14654 ; ZNVER1-NEXT: #NO_APP 14655 ; ZNVER1-NEXT: retq # sched: [1:0.50] 14656 tail call void asm "subb $3, %AL \0A\09 subb $3, $0 \0A\09 subb $3, $2 \0A\09 subb $1, $0 \0A\09 subb $0, $2 \0A\09 subb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 14657 ret void 14658 } 14659 define void @test_sub_16(i16 %a0, i16* %a1, i16 %a2) optsize { 14660 ; GENERIC-LABEL: test_sub_16: 14661 ; GENERIC: # %bb.0: 14662 ; GENERIC-NEXT: #APP 14663 ; GENERIC-NEXT: subw $511, %ax # imm = 0x1FF 14664 ; GENERIC-NEXT: # sched: [1:0.33] 14665 ; GENERIC-NEXT: subw $511, %di # imm = 0x1FF 14666 ; GENERIC-NEXT: # sched: [1:0.33] 14667 ; GENERIC-NEXT: subw $511, (%rsi) # imm = 0x1FF 14668 ; GENERIC-NEXT: # sched: [7:1.00] 14669 ; GENERIC-NEXT: subw $7, %di # sched: [1:0.33] 14670 ; GENERIC-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14671 ; GENERIC-NEXT: subw %dx, %di # sched: [1:0.33] 14672 ; GENERIC-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14673 ; GENERIC-NEXT: subw (%rsi), %di # sched: [6:0.50] 14674 ; GENERIC-NEXT: #NO_APP 14675 ; GENERIC-NEXT: retq # sched: [1:1.00] 14676 ; 14677 ; ATOM-LABEL: test_sub_16: 14678 ; ATOM: # %bb.0: 14679 ; ATOM-NEXT: #APP 14680 ; ATOM-NEXT: subw $511, %ax # imm = 0x1FF 14681 ; ATOM-NEXT: # sched: [1:0.50] 14682 ; ATOM-NEXT: subw $511, %di # imm = 0x1FF 14683 ; ATOM-NEXT: # sched: [1:0.50] 14684 ; ATOM-NEXT: subw $511, (%rsi) # imm = 0x1FF 14685 ; ATOM-NEXT: # sched: [1:1.00] 14686 ; ATOM-NEXT: subw $7, %di # sched: [1:0.50] 14687 ; ATOM-NEXT: subw $7, (%rsi) # sched: [1:1.00] 14688 ; ATOM-NEXT: subw %dx, %di # sched: [1:0.50] 14689 ; ATOM-NEXT: subw %di, (%rsi) # sched: [1:1.00] 14690 ; ATOM-NEXT: subw (%rsi), %di # sched: [1:1.00] 14691 ; ATOM-NEXT: #NO_APP 14692 ; ATOM-NEXT: retq # sched: [79:39.50] 14693 ; 14694 ; SLM-LABEL: test_sub_16: 14695 ; SLM: # %bb.0: 14696 ; SLM-NEXT: #APP 14697 ; SLM-NEXT: subw $511, %ax # imm = 0x1FF 14698 ; SLM-NEXT: # sched: [1:0.50] 14699 ; SLM-NEXT: subw $511, %di # imm = 0x1FF 14700 ; SLM-NEXT: # sched: [1:0.50] 14701 ; SLM-NEXT: subw $511, (%rsi) # imm = 0x1FF 14702 ; SLM-NEXT: # sched: [5:2.00] 14703 ; SLM-NEXT: subw $7, %di # sched: [1:0.50] 14704 ; SLM-NEXT: subw $7, (%rsi) # sched: [5:2.00] 14705 ; SLM-NEXT: subw %dx, %di # sched: [1:0.50] 14706 ; SLM-NEXT: subw %di, (%rsi) # sched: [5:2.00] 14707 ; SLM-NEXT: subw (%rsi), %di # sched: [4:1.00] 14708 ; SLM-NEXT: #NO_APP 14709 ; SLM-NEXT: retq # sched: [4:1.00] 14710 ; 14711 ; SANDY-LABEL: test_sub_16: 14712 ; SANDY: # %bb.0: 14713 ; SANDY-NEXT: #APP 14714 ; SANDY-NEXT: subw $511, %ax # imm = 0x1FF 14715 ; SANDY-NEXT: # sched: [1:0.33] 14716 ; SANDY-NEXT: subw $511, %di # imm = 0x1FF 14717 ; SANDY-NEXT: # sched: [1:0.33] 14718 ; SANDY-NEXT: subw $511, (%rsi) # imm = 0x1FF 14719 ; SANDY-NEXT: # sched: [7:1.00] 14720 ; SANDY-NEXT: subw $7, %di # sched: [1:0.33] 14721 ; SANDY-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14722 ; SANDY-NEXT: subw %dx, %di # sched: [1:0.33] 14723 ; SANDY-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14724 ; SANDY-NEXT: subw (%rsi), %di # sched: [6:0.50] 14725 ; SANDY-NEXT: #NO_APP 14726 ; SANDY-NEXT: retq # sched: [1:1.00] 14727 ; 14728 ; HASWELL-LABEL: test_sub_16: 14729 ; HASWELL: # %bb.0: 14730 ; HASWELL-NEXT: #APP 14731 ; HASWELL-NEXT: subw $511, %ax # imm = 0x1FF 14732 ; HASWELL-NEXT: # sched: [1:0.25] 14733 ; HASWELL-NEXT: subw $511, %di # imm = 0x1FF 14734 ; HASWELL-NEXT: # sched: [1:0.25] 14735 ; HASWELL-NEXT: subw $511, (%rsi) # imm = 0x1FF 14736 ; HASWELL-NEXT: # sched: [7:1.00] 14737 ; HASWELL-NEXT: subw $7, %di # sched: [1:0.25] 14738 ; HASWELL-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14739 ; HASWELL-NEXT: subw %dx, %di # sched: [1:0.25] 14740 ; HASWELL-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14741 ; HASWELL-NEXT: subw (%rsi), %di # sched: [6:0.50] 14742 ; HASWELL-NEXT: #NO_APP 14743 ; HASWELL-NEXT: retq # sched: [7:1.00] 14744 ; 14745 ; BROADWELL-LABEL: test_sub_16: 14746 ; BROADWELL: # %bb.0: 14747 ; BROADWELL-NEXT: #APP 14748 ; BROADWELL-NEXT: subw $511, %ax # imm = 0x1FF 14749 ; BROADWELL-NEXT: # sched: [1:0.25] 14750 ; BROADWELL-NEXT: subw $511, %di # imm = 0x1FF 14751 ; BROADWELL-NEXT: # sched: [1:0.25] 14752 ; BROADWELL-NEXT: subw $511, (%rsi) # imm = 0x1FF 14753 ; BROADWELL-NEXT: # sched: [7:1.00] 14754 ; BROADWELL-NEXT: subw $7, %di # sched: [1:0.25] 14755 ; BROADWELL-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14756 ; BROADWELL-NEXT: subw %dx, %di # sched: [1:0.25] 14757 ; BROADWELL-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14758 ; BROADWELL-NEXT: subw (%rsi), %di # sched: [6:0.50] 14759 ; BROADWELL-NEXT: #NO_APP 14760 ; BROADWELL-NEXT: retq # sched: [7:1.00] 14761 ; 14762 ; SKYLAKE-LABEL: test_sub_16: 14763 ; SKYLAKE: # %bb.0: 14764 ; SKYLAKE-NEXT: #APP 14765 ; SKYLAKE-NEXT: subw $511, %ax # imm = 0x1FF 14766 ; SKYLAKE-NEXT: # sched: [1:0.25] 14767 ; SKYLAKE-NEXT: subw $511, %di # imm = 0x1FF 14768 ; SKYLAKE-NEXT: # sched: [1:0.25] 14769 ; SKYLAKE-NEXT: subw $511, (%rsi) # imm = 0x1FF 14770 ; SKYLAKE-NEXT: # sched: [7:1.00] 14771 ; SKYLAKE-NEXT: subw $7, %di # sched: [1:0.25] 14772 ; SKYLAKE-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14773 ; SKYLAKE-NEXT: subw %dx, %di # sched: [1:0.25] 14774 ; SKYLAKE-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14775 ; SKYLAKE-NEXT: subw (%rsi), %di # sched: [6:0.50] 14776 ; SKYLAKE-NEXT: #NO_APP 14777 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 14778 ; 14779 ; SKX-LABEL: test_sub_16: 14780 ; SKX: # %bb.0: 14781 ; SKX-NEXT: #APP 14782 ; SKX-NEXT: subw $511, %ax # imm = 0x1FF 14783 ; SKX-NEXT: # sched: [1:0.25] 14784 ; SKX-NEXT: subw $511, %di # imm = 0x1FF 14785 ; SKX-NEXT: # sched: [1:0.25] 14786 ; SKX-NEXT: subw $511, (%rsi) # imm = 0x1FF 14787 ; SKX-NEXT: # sched: [7:1.00] 14788 ; SKX-NEXT: subw $7, %di # sched: [1:0.25] 14789 ; SKX-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14790 ; SKX-NEXT: subw %dx, %di # sched: [1:0.25] 14791 ; SKX-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14792 ; SKX-NEXT: subw (%rsi), %di # sched: [6:0.50] 14793 ; SKX-NEXT: #NO_APP 14794 ; SKX-NEXT: retq # sched: [7:1.00] 14795 ; 14796 ; BTVER2-LABEL: test_sub_16: 14797 ; BTVER2: # %bb.0: 14798 ; BTVER2-NEXT: #APP 14799 ; BTVER2-NEXT: subw $511, %ax # imm = 0x1FF 14800 ; BTVER2-NEXT: # sched: [1:0.50] 14801 ; BTVER2-NEXT: subw $511, %di # imm = 0x1FF 14802 ; BTVER2-NEXT: # sched: [1:0.50] 14803 ; BTVER2-NEXT: subw $511, (%rsi) # imm = 0x1FF 14804 ; BTVER2-NEXT: # sched: [5:1.00] 14805 ; BTVER2-NEXT: subw $7, %di # sched: [1:0.50] 14806 ; BTVER2-NEXT: subw $7, (%rsi) # sched: [5:1.00] 14807 ; BTVER2-NEXT: subw %dx, %di # sched: [1:0.50] 14808 ; BTVER2-NEXT: subw %di, (%rsi) # sched: [5:1.00] 14809 ; BTVER2-NEXT: subw (%rsi), %di # sched: [4:1.00] 14810 ; BTVER2-NEXT: #NO_APP 14811 ; BTVER2-NEXT: retq # sched: [4:1.00] 14812 ; 14813 ; ZNVER1-LABEL: test_sub_16: 14814 ; ZNVER1: # %bb.0: 14815 ; ZNVER1-NEXT: #APP 14816 ; ZNVER1-NEXT: subw $511, %ax # imm = 0x1FF 14817 ; ZNVER1-NEXT: # sched: [1:0.25] 14818 ; ZNVER1-NEXT: subw $511, %di # imm = 0x1FF 14819 ; ZNVER1-NEXT: # sched: [1:0.25] 14820 ; ZNVER1-NEXT: subw $511, (%rsi) # imm = 0x1FF 14821 ; ZNVER1-NEXT: # sched: [5:0.50] 14822 ; ZNVER1-NEXT: subw $7, %di # sched: [1:0.25] 14823 ; ZNVER1-NEXT: subw $7, (%rsi) # sched: [5:0.50] 14824 ; ZNVER1-NEXT: subw %dx, %di # sched: [1:0.25] 14825 ; ZNVER1-NEXT: subw %di, (%rsi) # sched: [5:0.50] 14826 ; ZNVER1-NEXT: subw (%rsi), %di # sched: [5:0.50] 14827 ; ZNVER1-NEXT: #NO_APP 14828 ; ZNVER1-NEXT: retq # sched: [1:0.50] 14829 tail call void asm "subw $3, %AX \0A\09 subw $3, $0 \0A\09 subw $3, $2 \0A\09 subw $4, $0 \0A\09 subw $4, $2 \0A\09 subw $1, $0 \0A\09 subw $0, $2 \0A\09 subw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 14830 ret void 14831 } 14832 define void @test_sub_32(i32 %a0, i32* %a1, i32 %a2) optsize { 14833 ; GENERIC-LABEL: test_sub_32: 14834 ; GENERIC: # %bb.0: 14835 ; GENERIC-NEXT: #APP 14836 ; GENERIC-NEXT: subl $665536, %eax # imm = 0xA27C0 14837 ; GENERIC-NEXT: # sched: [1:0.33] 14838 ; GENERIC-NEXT: subl $665536, %edi # imm = 0xA27C0 14839 ; GENERIC-NEXT: # sched: [1:0.33] 14840 ; GENERIC-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14841 ; GENERIC-NEXT: # sched: [7:1.00] 14842 ; GENERIC-NEXT: subl $7, %edi # sched: [1:0.33] 14843 ; GENERIC-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14844 ; GENERIC-NEXT: subl %edx, %edi # sched: [1:0.33] 14845 ; GENERIC-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14846 ; GENERIC-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14847 ; GENERIC-NEXT: #NO_APP 14848 ; GENERIC-NEXT: retq # sched: [1:1.00] 14849 ; 14850 ; ATOM-LABEL: test_sub_32: 14851 ; ATOM: # %bb.0: 14852 ; ATOM-NEXT: #APP 14853 ; ATOM-NEXT: subl $665536, %eax # imm = 0xA27C0 14854 ; ATOM-NEXT: # sched: [1:0.50] 14855 ; ATOM-NEXT: subl $665536, %edi # imm = 0xA27C0 14856 ; ATOM-NEXT: # sched: [1:0.50] 14857 ; ATOM-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14858 ; ATOM-NEXT: # sched: [1:1.00] 14859 ; ATOM-NEXT: subl $7, %edi # sched: [1:0.50] 14860 ; ATOM-NEXT: subl $7, (%rsi) # sched: [1:1.00] 14861 ; ATOM-NEXT: subl %edx, %edi # sched: [1:0.50] 14862 ; ATOM-NEXT: subl %edi, (%rsi) # sched: [1:1.00] 14863 ; ATOM-NEXT: subl (%rsi), %edi # sched: [1:1.00] 14864 ; ATOM-NEXT: #NO_APP 14865 ; ATOM-NEXT: retq # sched: [79:39.50] 14866 ; 14867 ; SLM-LABEL: test_sub_32: 14868 ; SLM: # %bb.0: 14869 ; SLM-NEXT: #APP 14870 ; SLM-NEXT: subl $665536, %eax # imm = 0xA27C0 14871 ; SLM-NEXT: # sched: [1:0.50] 14872 ; SLM-NEXT: subl $665536, %edi # imm = 0xA27C0 14873 ; SLM-NEXT: # sched: [1:0.50] 14874 ; SLM-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14875 ; SLM-NEXT: # sched: [5:2.00] 14876 ; SLM-NEXT: subl $7, %edi # sched: [1:0.50] 14877 ; SLM-NEXT: subl $7, (%rsi) # sched: [5:2.00] 14878 ; SLM-NEXT: subl %edx, %edi # sched: [1:0.50] 14879 ; SLM-NEXT: subl %edi, (%rsi) # sched: [5:2.00] 14880 ; SLM-NEXT: subl (%rsi), %edi # sched: [4:1.00] 14881 ; SLM-NEXT: #NO_APP 14882 ; SLM-NEXT: retq # sched: [4:1.00] 14883 ; 14884 ; SANDY-LABEL: test_sub_32: 14885 ; SANDY: # %bb.0: 14886 ; SANDY-NEXT: #APP 14887 ; SANDY-NEXT: subl $665536, %eax # imm = 0xA27C0 14888 ; SANDY-NEXT: # sched: [1:0.33] 14889 ; SANDY-NEXT: subl $665536, %edi # imm = 0xA27C0 14890 ; SANDY-NEXT: # sched: [1:0.33] 14891 ; SANDY-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14892 ; SANDY-NEXT: # sched: [7:1.00] 14893 ; SANDY-NEXT: subl $7, %edi # sched: [1:0.33] 14894 ; SANDY-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14895 ; SANDY-NEXT: subl %edx, %edi # sched: [1:0.33] 14896 ; SANDY-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14897 ; SANDY-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14898 ; SANDY-NEXT: #NO_APP 14899 ; SANDY-NEXT: retq # sched: [1:1.00] 14900 ; 14901 ; HASWELL-LABEL: test_sub_32: 14902 ; HASWELL: # %bb.0: 14903 ; HASWELL-NEXT: #APP 14904 ; HASWELL-NEXT: subl $665536, %eax # imm = 0xA27C0 14905 ; HASWELL-NEXT: # sched: [1:0.25] 14906 ; HASWELL-NEXT: subl $665536, %edi # imm = 0xA27C0 14907 ; HASWELL-NEXT: # sched: [1:0.25] 14908 ; HASWELL-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14909 ; HASWELL-NEXT: # sched: [7:1.00] 14910 ; HASWELL-NEXT: subl $7, %edi # sched: [1:0.25] 14911 ; HASWELL-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14912 ; HASWELL-NEXT: subl %edx, %edi # sched: [1:0.25] 14913 ; HASWELL-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14914 ; HASWELL-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14915 ; HASWELL-NEXT: #NO_APP 14916 ; HASWELL-NEXT: retq # sched: [7:1.00] 14917 ; 14918 ; BROADWELL-LABEL: test_sub_32: 14919 ; BROADWELL: # %bb.0: 14920 ; BROADWELL-NEXT: #APP 14921 ; BROADWELL-NEXT: subl $665536, %eax # imm = 0xA27C0 14922 ; BROADWELL-NEXT: # sched: [1:0.25] 14923 ; BROADWELL-NEXT: subl $665536, %edi # imm = 0xA27C0 14924 ; BROADWELL-NEXT: # sched: [1:0.25] 14925 ; BROADWELL-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14926 ; BROADWELL-NEXT: # sched: [7:1.00] 14927 ; BROADWELL-NEXT: subl $7, %edi # sched: [1:0.25] 14928 ; BROADWELL-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14929 ; BROADWELL-NEXT: subl %edx, %edi # sched: [1:0.25] 14930 ; BROADWELL-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14931 ; BROADWELL-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14932 ; BROADWELL-NEXT: #NO_APP 14933 ; BROADWELL-NEXT: retq # sched: [7:1.00] 14934 ; 14935 ; SKYLAKE-LABEL: test_sub_32: 14936 ; SKYLAKE: # %bb.0: 14937 ; SKYLAKE-NEXT: #APP 14938 ; SKYLAKE-NEXT: subl $665536, %eax # imm = 0xA27C0 14939 ; SKYLAKE-NEXT: # sched: [1:0.25] 14940 ; SKYLAKE-NEXT: subl $665536, %edi # imm = 0xA27C0 14941 ; SKYLAKE-NEXT: # sched: [1:0.25] 14942 ; SKYLAKE-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14943 ; SKYLAKE-NEXT: # sched: [7:1.00] 14944 ; SKYLAKE-NEXT: subl $7, %edi # sched: [1:0.25] 14945 ; SKYLAKE-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14946 ; SKYLAKE-NEXT: subl %edx, %edi # sched: [1:0.25] 14947 ; SKYLAKE-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14948 ; SKYLAKE-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14949 ; SKYLAKE-NEXT: #NO_APP 14950 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 14951 ; 14952 ; SKX-LABEL: test_sub_32: 14953 ; SKX: # %bb.0: 14954 ; SKX-NEXT: #APP 14955 ; SKX-NEXT: subl $665536, %eax # imm = 0xA27C0 14956 ; SKX-NEXT: # sched: [1:0.25] 14957 ; SKX-NEXT: subl $665536, %edi # imm = 0xA27C0 14958 ; SKX-NEXT: # sched: [1:0.25] 14959 ; SKX-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14960 ; SKX-NEXT: # sched: [7:1.00] 14961 ; SKX-NEXT: subl $7, %edi # sched: [1:0.25] 14962 ; SKX-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14963 ; SKX-NEXT: subl %edx, %edi # sched: [1:0.25] 14964 ; SKX-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14965 ; SKX-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14966 ; SKX-NEXT: #NO_APP 14967 ; SKX-NEXT: retq # sched: [7:1.00] 14968 ; 14969 ; BTVER2-LABEL: test_sub_32: 14970 ; BTVER2: # %bb.0: 14971 ; BTVER2-NEXT: #APP 14972 ; BTVER2-NEXT: subl $665536, %eax # imm = 0xA27C0 14973 ; BTVER2-NEXT: # sched: [1:0.50] 14974 ; BTVER2-NEXT: subl $665536, %edi # imm = 0xA27C0 14975 ; BTVER2-NEXT: # sched: [1:0.50] 14976 ; BTVER2-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14977 ; BTVER2-NEXT: # sched: [5:1.00] 14978 ; BTVER2-NEXT: subl $7, %edi # sched: [1:0.50] 14979 ; BTVER2-NEXT: subl $7, (%rsi) # sched: [5:1.00] 14980 ; BTVER2-NEXT: subl %edx, %edi # sched: [1:0.50] 14981 ; BTVER2-NEXT: subl %edi, (%rsi) # sched: [5:1.00] 14982 ; BTVER2-NEXT: subl (%rsi), %edi # sched: [4:1.00] 14983 ; BTVER2-NEXT: #NO_APP 14984 ; BTVER2-NEXT: retq # sched: [4:1.00] 14985 ; 14986 ; ZNVER1-LABEL: test_sub_32: 14987 ; ZNVER1: # %bb.0: 14988 ; ZNVER1-NEXT: #APP 14989 ; ZNVER1-NEXT: subl $665536, %eax # imm = 0xA27C0 14990 ; ZNVER1-NEXT: # sched: [1:0.25] 14991 ; ZNVER1-NEXT: subl $665536, %edi # imm = 0xA27C0 14992 ; ZNVER1-NEXT: # sched: [1:0.25] 14993 ; ZNVER1-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14994 ; ZNVER1-NEXT: # sched: [5:0.50] 14995 ; ZNVER1-NEXT: subl $7, %edi # sched: [1:0.25] 14996 ; ZNVER1-NEXT: subl $7, (%rsi) # sched: [5:0.50] 14997 ; ZNVER1-NEXT: subl %edx, %edi # sched: [1:0.25] 14998 ; ZNVER1-NEXT: subl %edi, (%rsi) # sched: [5:0.50] 14999 ; ZNVER1-NEXT: subl (%rsi), %edi # sched: [5:0.50] 15000 ; ZNVER1-NEXT: #NO_APP 15001 ; ZNVER1-NEXT: retq # sched: [1:0.50] 15002 tail call void asm "subl $3, %EAX \0A\09 subl $3, $0 \0A\09 subl $3, $2 \0A\09 subl $4, $0 \0A\09 subl $4, $2 \0A\09 subl $1, $0 \0A\09 subl $0, $2 \0A\09 subl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 15003 ret void 15004 } 15005 define void @test_sub_64(i64 %a0, i64* %a1, i64 %a2) optsize { 15006 ; GENERIC-LABEL: test_sub_64: 15007 ; GENERIC: # %bb.0: 15008 ; GENERIC-NEXT: #APP 15009 ; GENERIC-NEXT: subq $665536, %rax # imm = 0xA27C0 15010 ; GENERIC-NEXT: # sched: [1:0.33] 15011 ; GENERIC-NEXT: subq $665536, %rdi # imm = 0xA27C0 15012 ; GENERIC-NEXT: # sched: [1:0.33] 15013 ; GENERIC-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15014 ; GENERIC-NEXT: # sched: [7:1.00] 15015 ; GENERIC-NEXT: subq $7, %rdi # sched: [1:0.33] 15016 ; GENERIC-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15017 ; GENERIC-NEXT: subq %rdx, %rdi # sched: [1:0.33] 15018 ; GENERIC-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15019 ; GENERIC-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15020 ; GENERIC-NEXT: #NO_APP 15021 ; GENERIC-NEXT: retq # sched: [1:1.00] 15022 ; 15023 ; ATOM-LABEL: test_sub_64: 15024 ; ATOM: # %bb.0: 15025 ; ATOM-NEXT: #APP 15026 ; ATOM-NEXT: subq $665536, %rax # imm = 0xA27C0 15027 ; ATOM-NEXT: # sched: [1:0.50] 15028 ; ATOM-NEXT: subq $665536, %rdi # imm = 0xA27C0 15029 ; ATOM-NEXT: # sched: [1:0.50] 15030 ; ATOM-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15031 ; ATOM-NEXT: # sched: [1:1.00] 15032 ; ATOM-NEXT: subq $7, %rdi # sched: [1:0.50] 15033 ; ATOM-NEXT: subq $7, (%rsi) # sched: [1:1.00] 15034 ; ATOM-NEXT: subq %rdx, %rdi # sched: [1:0.50] 15035 ; ATOM-NEXT: subq %rdi, (%rsi) # sched: [1:1.00] 15036 ; ATOM-NEXT: subq (%rsi), %rdi # sched: [1:1.00] 15037 ; ATOM-NEXT: #NO_APP 15038 ; ATOM-NEXT: retq # sched: [79:39.50] 15039 ; 15040 ; SLM-LABEL: test_sub_64: 15041 ; SLM: # %bb.0: 15042 ; SLM-NEXT: #APP 15043 ; SLM-NEXT: subq $665536, %rax # imm = 0xA27C0 15044 ; SLM-NEXT: # sched: [1:0.50] 15045 ; SLM-NEXT: subq $665536, %rdi # imm = 0xA27C0 15046 ; SLM-NEXT: # sched: [1:0.50] 15047 ; SLM-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15048 ; SLM-NEXT: # sched: [5:2.00] 15049 ; SLM-NEXT: subq $7, %rdi # sched: [1:0.50] 15050 ; SLM-NEXT: subq $7, (%rsi) # sched: [5:2.00] 15051 ; SLM-NEXT: subq %rdx, %rdi # sched: [1:0.50] 15052 ; SLM-NEXT: subq %rdi, (%rsi) # sched: [5:2.00] 15053 ; SLM-NEXT: subq (%rsi), %rdi # sched: [4:1.00] 15054 ; SLM-NEXT: #NO_APP 15055 ; SLM-NEXT: retq # sched: [4:1.00] 15056 ; 15057 ; SANDY-LABEL: test_sub_64: 15058 ; SANDY: # %bb.0: 15059 ; SANDY-NEXT: #APP 15060 ; SANDY-NEXT: subq $665536, %rax # imm = 0xA27C0 15061 ; SANDY-NEXT: # sched: [1:0.33] 15062 ; SANDY-NEXT: subq $665536, %rdi # imm = 0xA27C0 15063 ; SANDY-NEXT: # sched: [1:0.33] 15064 ; SANDY-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15065 ; SANDY-NEXT: # sched: [7:1.00] 15066 ; SANDY-NEXT: subq $7, %rdi # sched: [1:0.33] 15067 ; SANDY-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15068 ; SANDY-NEXT: subq %rdx, %rdi # sched: [1:0.33] 15069 ; SANDY-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15070 ; SANDY-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15071 ; SANDY-NEXT: #NO_APP 15072 ; SANDY-NEXT: retq # sched: [1:1.00] 15073 ; 15074 ; HASWELL-LABEL: test_sub_64: 15075 ; HASWELL: # %bb.0: 15076 ; HASWELL-NEXT: #APP 15077 ; HASWELL-NEXT: subq $665536, %rax # imm = 0xA27C0 15078 ; HASWELL-NEXT: # sched: [1:0.25] 15079 ; HASWELL-NEXT: subq $665536, %rdi # imm = 0xA27C0 15080 ; HASWELL-NEXT: # sched: [1:0.25] 15081 ; HASWELL-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15082 ; HASWELL-NEXT: # sched: [7:1.00] 15083 ; HASWELL-NEXT: subq $7, %rdi # sched: [1:0.25] 15084 ; HASWELL-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15085 ; HASWELL-NEXT: subq %rdx, %rdi # sched: [1:0.25] 15086 ; HASWELL-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15087 ; HASWELL-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15088 ; HASWELL-NEXT: #NO_APP 15089 ; HASWELL-NEXT: retq # sched: [7:1.00] 15090 ; 15091 ; BROADWELL-LABEL: test_sub_64: 15092 ; BROADWELL: # %bb.0: 15093 ; BROADWELL-NEXT: #APP 15094 ; BROADWELL-NEXT: subq $665536, %rax # imm = 0xA27C0 15095 ; BROADWELL-NEXT: # sched: [1:0.25] 15096 ; BROADWELL-NEXT: subq $665536, %rdi # imm = 0xA27C0 15097 ; BROADWELL-NEXT: # sched: [1:0.25] 15098 ; BROADWELL-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15099 ; BROADWELL-NEXT: # sched: [7:1.00] 15100 ; BROADWELL-NEXT: subq $7, %rdi # sched: [1:0.25] 15101 ; BROADWELL-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15102 ; BROADWELL-NEXT: subq %rdx, %rdi # sched: [1:0.25] 15103 ; BROADWELL-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15104 ; BROADWELL-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15105 ; BROADWELL-NEXT: #NO_APP 15106 ; BROADWELL-NEXT: retq # sched: [7:1.00] 15107 ; 15108 ; SKYLAKE-LABEL: test_sub_64: 15109 ; SKYLAKE: # %bb.0: 15110 ; SKYLAKE-NEXT: #APP 15111 ; SKYLAKE-NEXT: subq $665536, %rax # imm = 0xA27C0 15112 ; SKYLAKE-NEXT: # sched: [1:0.25] 15113 ; SKYLAKE-NEXT: subq $665536, %rdi # imm = 0xA27C0 15114 ; SKYLAKE-NEXT: # sched: [1:0.25] 15115 ; SKYLAKE-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15116 ; SKYLAKE-NEXT: # sched: [7:1.00] 15117 ; SKYLAKE-NEXT: subq $7, %rdi # sched: [1:0.25] 15118 ; SKYLAKE-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15119 ; SKYLAKE-NEXT: subq %rdx, %rdi # sched: [1:0.25] 15120 ; SKYLAKE-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15121 ; SKYLAKE-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15122 ; SKYLAKE-NEXT: #NO_APP 15123 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 15124 ; 15125 ; SKX-LABEL: test_sub_64: 15126 ; SKX: # %bb.0: 15127 ; SKX-NEXT: #APP 15128 ; SKX-NEXT: subq $665536, %rax # imm = 0xA27C0 15129 ; SKX-NEXT: # sched: [1:0.25] 15130 ; SKX-NEXT: subq $665536, %rdi # imm = 0xA27C0 15131 ; SKX-NEXT: # sched: [1:0.25] 15132 ; SKX-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15133 ; SKX-NEXT: # sched: [7:1.00] 15134 ; SKX-NEXT: subq $7, %rdi # sched: [1:0.25] 15135 ; SKX-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15136 ; SKX-NEXT: subq %rdx, %rdi # sched: [1:0.25] 15137 ; SKX-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15138 ; SKX-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15139 ; SKX-NEXT: #NO_APP 15140 ; SKX-NEXT: retq # sched: [7:1.00] 15141 ; 15142 ; BTVER2-LABEL: test_sub_64: 15143 ; BTVER2: # %bb.0: 15144 ; BTVER2-NEXT: #APP 15145 ; BTVER2-NEXT: subq $665536, %rax # imm = 0xA27C0 15146 ; BTVER2-NEXT: # sched: [1:0.50] 15147 ; BTVER2-NEXT: subq $665536, %rdi # imm = 0xA27C0 15148 ; BTVER2-NEXT: # sched: [1:0.50] 15149 ; BTVER2-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15150 ; BTVER2-NEXT: # sched: [5:1.00] 15151 ; BTVER2-NEXT: subq $7, %rdi # sched: [1:0.50] 15152 ; BTVER2-NEXT: subq $7, (%rsi) # sched: [5:1.00] 15153 ; BTVER2-NEXT: subq %rdx, %rdi # sched: [1:0.50] 15154 ; BTVER2-NEXT: subq %rdi, (%rsi) # sched: [5:1.00] 15155 ; BTVER2-NEXT: subq (%rsi), %rdi # sched: [4:1.00] 15156 ; BTVER2-NEXT: #NO_APP 15157 ; BTVER2-NEXT: retq # sched: [4:1.00] 15158 ; 15159 ; ZNVER1-LABEL: test_sub_64: 15160 ; ZNVER1: # %bb.0: 15161 ; ZNVER1-NEXT: #APP 15162 ; ZNVER1-NEXT: subq $665536, %rax # imm = 0xA27C0 15163 ; ZNVER1-NEXT: # sched: [1:0.25] 15164 ; ZNVER1-NEXT: subq $665536, %rdi # imm = 0xA27C0 15165 ; ZNVER1-NEXT: # sched: [1:0.25] 15166 ; ZNVER1-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15167 ; ZNVER1-NEXT: # sched: [5:0.50] 15168 ; ZNVER1-NEXT: subq $7, %rdi # sched: [1:0.25] 15169 ; ZNVER1-NEXT: subq $7, (%rsi) # sched: [5:0.50] 15170 ; ZNVER1-NEXT: subq %rdx, %rdi # sched: [1:0.25] 15171 ; ZNVER1-NEXT: subq %rdi, (%rsi) # sched: [5:0.50] 15172 ; ZNVER1-NEXT: subq (%rsi), %rdi # sched: [5:0.50] 15173 ; ZNVER1-NEXT: #NO_APP 15174 ; ZNVER1-NEXT: retq # sched: [1:0.50] 15175 tail call void asm "subq $3, %RAX \0A\09 subq $3, $0 \0A\09 subq $3, $2 \0A\09 subq $4, $0 \0A\09 subq $4, $2 \0A\09 subq $1, $0 \0A\09 subq $0, $2 \0A\09 subq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 15176 ret void 15177 } 15178 15179 ; TODO - test_swapgs 15180 ; TODO - test_syscall 15181 ; TODO - test_sysenter 15182 ; TODO - test_sysexit 15183 ; TODO - test_sysret 15184 15185 define void @test_test_8(i8 %a0, i8* %a1) optsize { 15186 ; GENERIC-LABEL: test_test_8: 15187 ; GENERIC: # %bb.0: 15188 ; GENERIC-NEXT: #APP 15189 ; GENERIC-NEXT: testb $7, %al # sched: [1:0.33] 15190 ; GENERIC-NEXT: testb $7, %dil # sched: [1:0.33] 15191 ; GENERIC-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15192 ; GENERIC-NEXT: testb %dil, %dil # sched: [1:0.33] 15193 ; GENERIC-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15194 ; GENERIC-NEXT: #NO_APP 15195 ; GENERIC-NEXT: retq # sched: [1:1.00] 15196 ; 15197 ; ATOM-LABEL: test_test_8: 15198 ; ATOM: # %bb.0: 15199 ; ATOM-NEXT: #APP 15200 ; ATOM-NEXT: testb $7, %al # sched: [1:0.50] 15201 ; ATOM-NEXT: testb $7, %dil # sched: [1:0.50] 15202 ; ATOM-NEXT: testb $7, (%rsi) # sched: [1:1.00] 15203 ; ATOM-NEXT: testb %dil, %dil # sched: [1:0.50] 15204 ; ATOM-NEXT: testb %dil, (%rsi) # sched: [1:1.00] 15205 ; ATOM-NEXT: #NO_APP 15206 ; ATOM-NEXT: retq # sched: [79:39.50] 15207 ; 15208 ; SLM-LABEL: test_test_8: 15209 ; SLM: # %bb.0: 15210 ; SLM-NEXT: #APP 15211 ; SLM-NEXT: testb $7, %al # sched: [1:0.50] 15212 ; SLM-NEXT: testb $7, %dil # sched: [1:0.50] 15213 ; SLM-NEXT: testb $7, (%rsi) # sched: [4:1.00] 15214 ; SLM-NEXT: testb %dil, %dil # sched: [1:0.50] 15215 ; SLM-NEXT: testb %dil, (%rsi) # sched: [4:1.00] 15216 ; SLM-NEXT: #NO_APP 15217 ; SLM-NEXT: retq # sched: [4:1.00] 15218 ; 15219 ; SANDY-LABEL: test_test_8: 15220 ; SANDY: # %bb.0: 15221 ; SANDY-NEXT: #APP 15222 ; SANDY-NEXT: testb $7, %al # sched: [1:0.33] 15223 ; SANDY-NEXT: testb $7, %dil # sched: [1:0.33] 15224 ; SANDY-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15225 ; SANDY-NEXT: testb %dil, %dil # sched: [1:0.33] 15226 ; SANDY-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15227 ; SANDY-NEXT: #NO_APP 15228 ; SANDY-NEXT: retq # sched: [1:1.00] 15229 ; 15230 ; HASWELL-LABEL: test_test_8: 15231 ; HASWELL: # %bb.0: 15232 ; HASWELL-NEXT: #APP 15233 ; HASWELL-NEXT: testb $7, %al # sched: [1:0.25] 15234 ; HASWELL-NEXT: testb $7, %dil # sched: [1:0.25] 15235 ; HASWELL-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15236 ; HASWELL-NEXT: testb %dil, %dil # sched: [1:0.25] 15237 ; HASWELL-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15238 ; HASWELL-NEXT: #NO_APP 15239 ; HASWELL-NEXT: retq # sched: [7:1.00] 15240 ; 15241 ; BROADWELL-LABEL: test_test_8: 15242 ; BROADWELL: # %bb.0: 15243 ; BROADWELL-NEXT: #APP 15244 ; BROADWELL-NEXT: testb $7, %al # sched: [1:0.25] 15245 ; BROADWELL-NEXT: testb $7, %dil # sched: [1:0.25] 15246 ; BROADWELL-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15247 ; BROADWELL-NEXT: testb %dil, %dil # sched: [1:0.25] 15248 ; BROADWELL-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15249 ; BROADWELL-NEXT: #NO_APP 15250 ; BROADWELL-NEXT: retq # sched: [7:1.00] 15251 ; 15252 ; SKYLAKE-LABEL: test_test_8: 15253 ; SKYLAKE: # %bb.0: 15254 ; SKYLAKE-NEXT: #APP 15255 ; SKYLAKE-NEXT: testb $7, %al # sched: [1:0.25] 15256 ; SKYLAKE-NEXT: testb $7, %dil # sched: [1:0.25] 15257 ; SKYLAKE-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15258 ; SKYLAKE-NEXT: testb %dil, %dil # sched: [1:0.25] 15259 ; SKYLAKE-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15260 ; SKYLAKE-NEXT: #NO_APP 15261 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 15262 ; 15263 ; SKX-LABEL: test_test_8: 15264 ; SKX: # %bb.0: 15265 ; SKX-NEXT: #APP 15266 ; SKX-NEXT: testb $7, %al # sched: [1:0.25] 15267 ; SKX-NEXT: testb $7, %dil # sched: [1:0.25] 15268 ; SKX-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15269 ; SKX-NEXT: testb %dil, %dil # sched: [1:0.25] 15270 ; SKX-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15271 ; SKX-NEXT: #NO_APP 15272 ; SKX-NEXT: retq # sched: [7:1.00] 15273 ; 15274 ; BTVER2-LABEL: test_test_8: 15275 ; BTVER2: # %bb.0: 15276 ; BTVER2-NEXT: #APP 15277 ; BTVER2-NEXT: testb $7, %al # sched: [1:0.50] 15278 ; BTVER2-NEXT: testb $7, %dil # sched: [1:0.50] 15279 ; BTVER2-NEXT: testb $7, (%rsi) # sched: [4:1.00] 15280 ; BTVER2-NEXT: testb %dil, %dil # sched: [1:0.50] 15281 ; BTVER2-NEXT: testb %dil, (%rsi) # sched: [4:1.00] 15282 ; BTVER2-NEXT: #NO_APP 15283 ; BTVER2-NEXT: retq # sched: [4:1.00] 15284 ; 15285 ; ZNVER1-LABEL: test_test_8: 15286 ; ZNVER1: # %bb.0: 15287 ; ZNVER1-NEXT: #APP 15288 ; ZNVER1-NEXT: testb $7, %al # sched: [1:0.25] 15289 ; ZNVER1-NEXT: testb $7, %dil # sched: [1:0.25] 15290 ; ZNVER1-NEXT: testb $7, (%rsi) # sched: [5:0.50] 15291 ; ZNVER1-NEXT: testb %dil, %dil # sched: [1:0.25] 15292 ; ZNVER1-NEXT: testb %dil, (%rsi) # sched: [5:0.50] 15293 ; ZNVER1-NEXT: #NO_APP 15294 ; ZNVER1-NEXT: retq # sched: [1:0.50] 15295 tail call void asm "testb $2, %AL \0A\09 testb $2, $0 \0A\09 testb $2, $1 \0A\09 testb $0, $0 \0A\09 testb $0, $1", "r,*m,i"(i8 %a0, i8* %a1, i8 7) nounwind 15296 ret void 15297 } 15298 define void @test_test_16(i16 %a0, i16* %a1) optsize { 15299 ; GENERIC-LABEL: test_test_16: 15300 ; GENERIC: # %bb.0: 15301 ; GENERIC-NEXT: #APP 15302 ; GENERIC-NEXT: testw $511, %ax # imm = 0x1FF 15303 ; GENERIC-NEXT: # sched: [1:0.33] 15304 ; GENERIC-NEXT: testw $511, %di # imm = 0x1FF 15305 ; GENERIC-NEXT: # sched: [1:0.33] 15306 ; GENERIC-NEXT: testw $511, (%rsi) # imm = 0x1FF 15307 ; GENERIC-NEXT: # sched: [6:0.50] 15308 ; GENERIC-NEXT: testw %di, %di # sched: [1:0.33] 15309 ; GENERIC-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15310 ; GENERIC-NEXT: #NO_APP 15311 ; GENERIC-NEXT: retq # sched: [1:1.00] 15312 ; 15313 ; ATOM-LABEL: test_test_16: 15314 ; ATOM: # %bb.0: 15315 ; ATOM-NEXT: #APP 15316 ; ATOM-NEXT: testw $511, %ax # imm = 0x1FF 15317 ; ATOM-NEXT: # sched: [1:0.50] 15318 ; ATOM-NEXT: testw $511, %di # imm = 0x1FF 15319 ; ATOM-NEXT: # sched: [1:0.50] 15320 ; ATOM-NEXT: testw $511, (%rsi) # imm = 0x1FF 15321 ; ATOM-NEXT: # sched: [1:1.00] 15322 ; ATOM-NEXT: testw %di, %di # sched: [1:0.50] 15323 ; ATOM-NEXT: testw %di, (%rsi) # sched: [1:1.00] 15324 ; ATOM-NEXT: #NO_APP 15325 ; ATOM-NEXT: retq # sched: [79:39.50] 15326 ; 15327 ; SLM-LABEL: test_test_16: 15328 ; SLM: # %bb.0: 15329 ; SLM-NEXT: #APP 15330 ; SLM-NEXT: testw $511, %ax # imm = 0x1FF 15331 ; SLM-NEXT: # sched: [1:0.50] 15332 ; SLM-NEXT: testw $511, %di # imm = 0x1FF 15333 ; SLM-NEXT: # sched: [1:0.50] 15334 ; SLM-NEXT: testw $511, (%rsi) # imm = 0x1FF 15335 ; SLM-NEXT: # sched: [4:1.00] 15336 ; SLM-NEXT: testw %di, %di # sched: [1:0.50] 15337 ; SLM-NEXT: testw %di, (%rsi) # sched: [4:1.00] 15338 ; SLM-NEXT: #NO_APP 15339 ; SLM-NEXT: retq # sched: [4:1.00] 15340 ; 15341 ; SANDY-LABEL: test_test_16: 15342 ; SANDY: # %bb.0: 15343 ; SANDY-NEXT: #APP 15344 ; SANDY-NEXT: testw $511, %ax # imm = 0x1FF 15345 ; SANDY-NEXT: # sched: [1:0.33] 15346 ; SANDY-NEXT: testw $511, %di # imm = 0x1FF 15347 ; SANDY-NEXT: # sched: [1:0.33] 15348 ; SANDY-NEXT: testw $511, (%rsi) # imm = 0x1FF 15349 ; SANDY-NEXT: # sched: [6:0.50] 15350 ; SANDY-NEXT: testw %di, %di # sched: [1:0.33] 15351 ; SANDY-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15352 ; SANDY-NEXT: #NO_APP 15353 ; SANDY-NEXT: retq # sched: [1:1.00] 15354 ; 15355 ; HASWELL-LABEL: test_test_16: 15356 ; HASWELL: # %bb.0: 15357 ; HASWELL-NEXT: #APP 15358 ; HASWELL-NEXT: testw $511, %ax # imm = 0x1FF 15359 ; HASWELL-NEXT: # sched: [1:0.25] 15360 ; HASWELL-NEXT: testw $511, %di # imm = 0x1FF 15361 ; HASWELL-NEXT: # sched: [1:0.25] 15362 ; HASWELL-NEXT: testw $511, (%rsi) # imm = 0x1FF 15363 ; HASWELL-NEXT: # sched: [6:0.50] 15364 ; HASWELL-NEXT: testw %di, %di # sched: [1:0.25] 15365 ; HASWELL-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15366 ; HASWELL-NEXT: #NO_APP 15367 ; HASWELL-NEXT: retq # sched: [7:1.00] 15368 ; 15369 ; BROADWELL-LABEL: test_test_16: 15370 ; BROADWELL: # %bb.0: 15371 ; BROADWELL-NEXT: #APP 15372 ; BROADWELL-NEXT: testw $511, %ax # imm = 0x1FF 15373 ; BROADWELL-NEXT: # sched: [1:0.25] 15374 ; BROADWELL-NEXT: testw $511, %di # imm = 0x1FF 15375 ; BROADWELL-NEXT: # sched: [1:0.25] 15376 ; BROADWELL-NEXT: testw $511, (%rsi) # imm = 0x1FF 15377 ; BROADWELL-NEXT: # sched: [6:0.50] 15378 ; BROADWELL-NEXT: testw %di, %di # sched: [1:0.25] 15379 ; BROADWELL-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15380 ; BROADWELL-NEXT: #NO_APP 15381 ; BROADWELL-NEXT: retq # sched: [7:1.00] 15382 ; 15383 ; SKYLAKE-LABEL: test_test_16: 15384 ; SKYLAKE: # %bb.0: 15385 ; SKYLAKE-NEXT: #APP 15386 ; SKYLAKE-NEXT: testw $511, %ax # imm = 0x1FF 15387 ; SKYLAKE-NEXT: # sched: [1:0.25] 15388 ; SKYLAKE-NEXT: testw $511, %di # imm = 0x1FF 15389 ; SKYLAKE-NEXT: # sched: [1:0.25] 15390 ; SKYLAKE-NEXT: testw $511, (%rsi) # imm = 0x1FF 15391 ; SKYLAKE-NEXT: # sched: [6:0.50] 15392 ; SKYLAKE-NEXT: testw %di, %di # sched: [1:0.25] 15393 ; SKYLAKE-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15394 ; SKYLAKE-NEXT: #NO_APP 15395 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 15396 ; 15397 ; SKX-LABEL: test_test_16: 15398 ; SKX: # %bb.0: 15399 ; SKX-NEXT: #APP 15400 ; SKX-NEXT: testw $511, %ax # imm = 0x1FF 15401 ; SKX-NEXT: # sched: [1:0.25] 15402 ; SKX-NEXT: testw $511, %di # imm = 0x1FF 15403 ; SKX-NEXT: # sched: [1:0.25] 15404 ; SKX-NEXT: testw $511, (%rsi) # imm = 0x1FF 15405 ; SKX-NEXT: # sched: [6:0.50] 15406 ; SKX-NEXT: testw %di, %di # sched: [1:0.25] 15407 ; SKX-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15408 ; SKX-NEXT: #NO_APP 15409 ; SKX-NEXT: retq # sched: [7:1.00] 15410 ; 15411 ; BTVER2-LABEL: test_test_16: 15412 ; BTVER2: # %bb.0: 15413 ; BTVER2-NEXT: #APP 15414 ; BTVER2-NEXT: testw $511, %ax # imm = 0x1FF 15415 ; BTVER2-NEXT: # sched: [1:0.50] 15416 ; BTVER2-NEXT: testw $511, %di # imm = 0x1FF 15417 ; BTVER2-NEXT: # sched: [1:0.50] 15418 ; BTVER2-NEXT: testw $511, (%rsi) # imm = 0x1FF 15419 ; BTVER2-NEXT: # sched: [4:1.00] 15420 ; BTVER2-NEXT: testw %di, %di # sched: [1:0.50] 15421 ; BTVER2-NEXT: testw %di, (%rsi) # sched: [4:1.00] 15422 ; BTVER2-NEXT: #NO_APP 15423 ; BTVER2-NEXT: retq # sched: [4:1.00] 15424 ; 15425 ; ZNVER1-LABEL: test_test_16: 15426 ; ZNVER1: # %bb.0: 15427 ; ZNVER1-NEXT: #APP 15428 ; ZNVER1-NEXT: testw $511, %ax # imm = 0x1FF 15429 ; ZNVER1-NEXT: # sched: [1:0.25] 15430 ; ZNVER1-NEXT: testw $511, %di # imm = 0x1FF 15431 ; ZNVER1-NEXT: # sched: [1:0.25] 15432 ; ZNVER1-NEXT: testw $511, (%rsi) # imm = 0x1FF 15433 ; ZNVER1-NEXT: # sched: [5:0.50] 15434 ; ZNVER1-NEXT: testw %di, %di # sched: [1:0.25] 15435 ; ZNVER1-NEXT: testw %di, (%rsi) # sched: [5:0.50] 15436 ; ZNVER1-NEXT: #NO_APP 15437 ; ZNVER1-NEXT: retq # sched: [1:0.50] 15438 tail call void asm "testw $2, %AX \0A\09 testw $2, $0 \0A\09 testw $2, $1 \0A\09 testw $0, $0 \0A\09 testw $0, $1", "r,*m,i"(i16 %a0, i16* %a1, i16 511) nounwind 15439 ret void 15440 } 15441 define void @test_test_32(i32 %a0, i32* %a1) optsize { 15442 ; GENERIC-LABEL: test_test_32: 15443 ; GENERIC: # %bb.0: 15444 ; GENERIC-NEXT: #APP 15445 ; GENERIC-NEXT: testl $665536, %eax # imm = 0xA27C0 15446 ; GENERIC-NEXT: # sched: [1:0.33] 15447 ; GENERIC-NEXT: testl $665536, %edi # imm = 0xA27C0 15448 ; GENERIC-NEXT: # sched: [1:0.33] 15449 ; GENERIC-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15450 ; GENERIC-NEXT: # sched: [6:0.50] 15451 ; GENERIC-NEXT: testl %edi, %edi # sched: [1:0.33] 15452 ; GENERIC-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15453 ; GENERIC-NEXT: #NO_APP 15454 ; GENERIC-NEXT: retq # sched: [1:1.00] 15455 ; 15456 ; ATOM-LABEL: test_test_32: 15457 ; ATOM: # %bb.0: 15458 ; ATOM-NEXT: #APP 15459 ; ATOM-NEXT: testl $665536, %eax # imm = 0xA27C0 15460 ; ATOM-NEXT: # sched: [1:0.50] 15461 ; ATOM-NEXT: testl $665536, %edi # imm = 0xA27C0 15462 ; ATOM-NEXT: # sched: [1:0.50] 15463 ; ATOM-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15464 ; ATOM-NEXT: # sched: [1:1.00] 15465 ; ATOM-NEXT: testl %edi, %edi # sched: [1:0.50] 15466 ; ATOM-NEXT: testl %edi, (%rsi) # sched: [1:1.00] 15467 ; ATOM-NEXT: #NO_APP 15468 ; ATOM-NEXT: retq # sched: [79:39.50] 15469 ; 15470 ; SLM-LABEL: test_test_32: 15471 ; SLM: # %bb.0: 15472 ; SLM-NEXT: #APP 15473 ; SLM-NEXT: testl $665536, %eax # imm = 0xA27C0 15474 ; SLM-NEXT: # sched: [1:0.50] 15475 ; SLM-NEXT: testl $665536, %edi # imm = 0xA27C0 15476 ; SLM-NEXT: # sched: [1:0.50] 15477 ; SLM-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15478 ; SLM-NEXT: # sched: [4:1.00] 15479 ; SLM-NEXT: testl %edi, %edi # sched: [1:0.50] 15480 ; SLM-NEXT: testl %edi, (%rsi) # sched: [4:1.00] 15481 ; SLM-NEXT: #NO_APP 15482 ; SLM-NEXT: retq # sched: [4:1.00] 15483 ; 15484 ; SANDY-LABEL: test_test_32: 15485 ; SANDY: # %bb.0: 15486 ; SANDY-NEXT: #APP 15487 ; SANDY-NEXT: testl $665536, %eax # imm = 0xA27C0 15488 ; SANDY-NEXT: # sched: [1:0.33] 15489 ; SANDY-NEXT: testl $665536, %edi # imm = 0xA27C0 15490 ; SANDY-NEXT: # sched: [1:0.33] 15491 ; SANDY-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15492 ; SANDY-NEXT: # sched: [6:0.50] 15493 ; SANDY-NEXT: testl %edi, %edi # sched: [1:0.33] 15494 ; SANDY-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15495 ; SANDY-NEXT: #NO_APP 15496 ; SANDY-NEXT: retq # sched: [1:1.00] 15497 ; 15498 ; HASWELL-LABEL: test_test_32: 15499 ; HASWELL: # %bb.0: 15500 ; HASWELL-NEXT: #APP 15501 ; HASWELL-NEXT: testl $665536, %eax # imm = 0xA27C0 15502 ; HASWELL-NEXT: # sched: [1:0.25] 15503 ; HASWELL-NEXT: testl $665536, %edi # imm = 0xA27C0 15504 ; HASWELL-NEXT: # sched: [1:0.25] 15505 ; HASWELL-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15506 ; HASWELL-NEXT: # sched: [6:0.50] 15507 ; HASWELL-NEXT: testl %edi, %edi # sched: [1:0.25] 15508 ; HASWELL-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15509 ; HASWELL-NEXT: #NO_APP 15510 ; HASWELL-NEXT: retq # sched: [7:1.00] 15511 ; 15512 ; BROADWELL-LABEL: test_test_32: 15513 ; BROADWELL: # %bb.0: 15514 ; BROADWELL-NEXT: #APP 15515 ; BROADWELL-NEXT: testl $665536, %eax # imm = 0xA27C0 15516 ; BROADWELL-NEXT: # sched: [1:0.25] 15517 ; BROADWELL-NEXT: testl $665536, %edi # imm = 0xA27C0 15518 ; BROADWELL-NEXT: # sched: [1:0.25] 15519 ; BROADWELL-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15520 ; BROADWELL-NEXT: # sched: [6:0.50] 15521 ; BROADWELL-NEXT: testl %edi, %edi # sched: [1:0.25] 15522 ; BROADWELL-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15523 ; BROADWELL-NEXT: #NO_APP 15524 ; BROADWELL-NEXT: retq # sched: [7:1.00] 15525 ; 15526 ; SKYLAKE-LABEL: test_test_32: 15527 ; SKYLAKE: # %bb.0: 15528 ; SKYLAKE-NEXT: #APP 15529 ; SKYLAKE-NEXT: testl $665536, %eax # imm = 0xA27C0 15530 ; SKYLAKE-NEXT: # sched: [1:0.25] 15531 ; SKYLAKE-NEXT: testl $665536, %edi # imm = 0xA27C0 15532 ; SKYLAKE-NEXT: # sched: [1:0.25] 15533 ; SKYLAKE-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15534 ; SKYLAKE-NEXT: # sched: [6:0.50] 15535 ; SKYLAKE-NEXT: testl %edi, %edi # sched: [1:0.25] 15536 ; SKYLAKE-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15537 ; SKYLAKE-NEXT: #NO_APP 15538 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 15539 ; 15540 ; SKX-LABEL: test_test_32: 15541 ; SKX: # %bb.0: 15542 ; SKX-NEXT: #APP 15543 ; SKX-NEXT: testl $665536, %eax # imm = 0xA27C0 15544 ; SKX-NEXT: # sched: [1:0.25] 15545 ; SKX-NEXT: testl $665536, %edi # imm = 0xA27C0 15546 ; SKX-NEXT: # sched: [1:0.25] 15547 ; SKX-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15548 ; SKX-NEXT: # sched: [6:0.50] 15549 ; SKX-NEXT: testl %edi, %edi # sched: [1:0.25] 15550 ; SKX-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15551 ; SKX-NEXT: #NO_APP 15552 ; SKX-NEXT: retq # sched: [7:1.00] 15553 ; 15554 ; BTVER2-LABEL: test_test_32: 15555 ; BTVER2: # %bb.0: 15556 ; BTVER2-NEXT: #APP 15557 ; BTVER2-NEXT: testl $665536, %eax # imm = 0xA27C0 15558 ; BTVER2-NEXT: # sched: [1:0.50] 15559 ; BTVER2-NEXT: testl $665536, %edi # imm = 0xA27C0 15560 ; BTVER2-NEXT: # sched: [1:0.50] 15561 ; BTVER2-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15562 ; BTVER2-NEXT: # sched: [4:1.00] 15563 ; BTVER2-NEXT: testl %edi, %edi # sched: [1:0.50] 15564 ; BTVER2-NEXT: testl %edi, (%rsi) # sched: [4:1.00] 15565 ; BTVER2-NEXT: #NO_APP 15566 ; BTVER2-NEXT: retq # sched: [4:1.00] 15567 ; 15568 ; ZNVER1-LABEL: test_test_32: 15569 ; ZNVER1: # %bb.0: 15570 ; ZNVER1-NEXT: #APP 15571 ; ZNVER1-NEXT: testl $665536, %eax # imm = 0xA27C0 15572 ; ZNVER1-NEXT: # sched: [1:0.25] 15573 ; ZNVER1-NEXT: testl $665536, %edi # imm = 0xA27C0 15574 ; ZNVER1-NEXT: # sched: [1:0.25] 15575 ; ZNVER1-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15576 ; ZNVER1-NEXT: # sched: [5:0.50] 15577 ; ZNVER1-NEXT: testl %edi, %edi # sched: [1:0.25] 15578 ; ZNVER1-NEXT: testl %edi, (%rsi) # sched: [5:0.50] 15579 ; ZNVER1-NEXT: #NO_APP 15580 ; ZNVER1-NEXT: retq # sched: [1:0.50] 15581 tail call void asm "testl $2, %EAX \0A\09 testl $2, $0 \0A\09 testl $2, $1 \0A\09 testl $0, $0 \0A\09 testl $0, $1", "r,*m,i"(i32 %a0, i32* %a1, i32 665536) nounwind 15582 ret void 15583 } 15584 define void @test_test_64(i64 %a0, i64* %a1) optsize { 15585 ; GENERIC-LABEL: test_test_64: 15586 ; GENERIC: # %bb.0: 15587 ; GENERIC-NEXT: #APP 15588 ; GENERIC-NEXT: testq $665536, %rax # imm = 0xA27C0 15589 ; GENERIC-NEXT: # sched: [1:0.33] 15590 ; GENERIC-NEXT: testq $665536, %rdi # imm = 0xA27C0 15591 ; GENERIC-NEXT: # sched: [1:0.33] 15592 ; GENERIC-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15593 ; GENERIC-NEXT: # sched: [6:0.50] 15594 ; GENERIC-NEXT: testq %rdi, %rdi # sched: [1:0.33] 15595 ; GENERIC-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15596 ; GENERIC-NEXT: #NO_APP 15597 ; GENERIC-NEXT: retq # sched: [1:1.00] 15598 ; 15599 ; ATOM-LABEL: test_test_64: 15600 ; ATOM: # %bb.0: 15601 ; ATOM-NEXT: #APP 15602 ; ATOM-NEXT: testq $665536, %rax # imm = 0xA27C0 15603 ; ATOM-NEXT: # sched: [1:0.50] 15604 ; ATOM-NEXT: testq $665536, %rdi # imm = 0xA27C0 15605 ; ATOM-NEXT: # sched: [1:0.50] 15606 ; ATOM-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15607 ; ATOM-NEXT: # sched: [1:1.00] 15608 ; ATOM-NEXT: testq %rdi, %rdi # sched: [1:0.50] 15609 ; ATOM-NEXT: testq %rdi, (%rsi) # sched: [1:1.00] 15610 ; ATOM-NEXT: #NO_APP 15611 ; ATOM-NEXT: retq # sched: [79:39.50] 15612 ; 15613 ; SLM-LABEL: test_test_64: 15614 ; SLM: # %bb.0: 15615 ; SLM-NEXT: #APP 15616 ; SLM-NEXT: testq $665536, %rax # imm = 0xA27C0 15617 ; SLM-NEXT: # sched: [1:0.50] 15618 ; SLM-NEXT: testq $665536, %rdi # imm = 0xA27C0 15619 ; SLM-NEXT: # sched: [1:0.50] 15620 ; SLM-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15621 ; SLM-NEXT: # sched: [4:1.00] 15622 ; SLM-NEXT: testq %rdi, %rdi # sched: [1:0.50] 15623 ; SLM-NEXT: testq %rdi, (%rsi) # sched: [4:1.00] 15624 ; SLM-NEXT: #NO_APP 15625 ; SLM-NEXT: retq # sched: [4:1.00] 15626 ; 15627 ; SANDY-LABEL: test_test_64: 15628 ; SANDY: # %bb.0: 15629 ; SANDY-NEXT: #APP 15630 ; SANDY-NEXT: testq $665536, %rax # imm = 0xA27C0 15631 ; SANDY-NEXT: # sched: [1:0.33] 15632 ; SANDY-NEXT: testq $665536, %rdi # imm = 0xA27C0 15633 ; SANDY-NEXT: # sched: [1:0.33] 15634 ; SANDY-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15635 ; SANDY-NEXT: # sched: [6:0.50] 15636 ; SANDY-NEXT: testq %rdi, %rdi # sched: [1:0.33] 15637 ; SANDY-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15638 ; SANDY-NEXT: #NO_APP 15639 ; SANDY-NEXT: retq # sched: [1:1.00] 15640 ; 15641 ; HASWELL-LABEL: test_test_64: 15642 ; HASWELL: # %bb.0: 15643 ; HASWELL-NEXT: #APP 15644 ; HASWELL-NEXT: testq $665536, %rax # imm = 0xA27C0 15645 ; HASWELL-NEXT: # sched: [1:0.25] 15646 ; HASWELL-NEXT: testq $665536, %rdi # imm = 0xA27C0 15647 ; HASWELL-NEXT: # sched: [1:0.25] 15648 ; HASWELL-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15649 ; HASWELL-NEXT: # sched: [6:0.50] 15650 ; HASWELL-NEXT: testq %rdi, %rdi # sched: [1:0.25] 15651 ; HASWELL-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15652 ; HASWELL-NEXT: #NO_APP 15653 ; HASWELL-NEXT: retq # sched: [7:1.00] 15654 ; 15655 ; BROADWELL-LABEL: test_test_64: 15656 ; BROADWELL: # %bb.0: 15657 ; BROADWELL-NEXT: #APP 15658 ; BROADWELL-NEXT: testq $665536, %rax # imm = 0xA27C0 15659 ; BROADWELL-NEXT: # sched: [1:0.25] 15660 ; BROADWELL-NEXT: testq $665536, %rdi # imm = 0xA27C0 15661 ; BROADWELL-NEXT: # sched: [1:0.25] 15662 ; BROADWELL-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15663 ; BROADWELL-NEXT: # sched: [6:0.50] 15664 ; BROADWELL-NEXT: testq %rdi, %rdi # sched: [1:0.25] 15665 ; BROADWELL-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15666 ; BROADWELL-NEXT: #NO_APP 15667 ; BROADWELL-NEXT: retq # sched: [7:1.00] 15668 ; 15669 ; SKYLAKE-LABEL: test_test_64: 15670 ; SKYLAKE: # %bb.0: 15671 ; SKYLAKE-NEXT: #APP 15672 ; SKYLAKE-NEXT: testq $665536, %rax # imm = 0xA27C0 15673 ; SKYLAKE-NEXT: # sched: [1:0.25] 15674 ; SKYLAKE-NEXT: testq $665536, %rdi # imm = 0xA27C0 15675 ; SKYLAKE-NEXT: # sched: [1:0.25] 15676 ; SKYLAKE-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15677 ; SKYLAKE-NEXT: # sched: [6:0.50] 15678 ; SKYLAKE-NEXT: testq %rdi, %rdi # sched: [1:0.25] 15679 ; SKYLAKE-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15680 ; SKYLAKE-NEXT: #NO_APP 15681 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 15682 ; 15683 ; SKX-LABEL: test_test_64: 15684 ; SKX: # %bb.0: 15685 ; SKX-NEXT: #APP 15686 ; SKX-NEXT: testq $665536, %rax # imm = 0xA27C0 15687 ; SKX-NEXT: # sched: [1:0.25] 15688 ; SKX-NEXT: testq $665536, %rdi # imm = 0xA27C0 15689 ; SKX-NEXT: # sched: [1:0.25] 15690 ; SKX-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15691 ; SKX-NEXT: # sched: [6:0.50] 15692 ; SKX-NEXT: testq %rdi, %rdi # sched: [1:0.25] 15693 ; SKX-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15694 ; SKX-NEXT: #NO_APP 15695 ; SKX-NEXT: retq # sched: [7:1.00] 15696 ; 15697 ; BTVER2-LABEL: test_test_64: 15698 ; BTVER2: # %bb.0: 15699 ; BTVER2-NEXT: #APP 15700 ; BTVER2-NEXT: testq $665536, %rax # imm = 0xA27C0 15701 ; BTVER2-NEXT: # sched: [1:0.50] 15702 ; BTVER2-NEXT: testq $665536, %rdi # imm = 0xA27C0 15703 ; BTVER2-NEXT: # sched: [1:0.50] 15704 ; BTVER2-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15705 ; BTVER2-NEXT: # sched: [4:1.00] 15706 ; BTVER2-NEXT: testq %rdi, %rdi # sched: [1:0.50] 15707 ; BTVER2-NEXT: testq %rdi, (%rsi) # sched: [4:1.00] 15708 ; BTVER2-NEXT: #NO_APP 15709 ; BTVER2-NEXT: retq # sched: [4:1.00] 15710 ; 15711 ; ZNVER1-LABEL: test_test_64: 15712 ; ZNVER1: # %bb.0: 15713 ; ZNVER1-NEXT: #APP 15714 ; ZNVER1-NEXT: testq $665536, %rax # imm = 0xA27C0 15715 ; ZNVER1-NEXT: # sched: [1:0.25] 15716 ; ZNVER1-NEXT: testq $665536, %rdi # imm = 0xA27C0 15717 ; ZNVER1-NEXT: # sched: [1:0.25] 15718 ; ZNVER1-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15719 ; ZNVER1-NEXT: # sched: [5:0.50] 15720 ; ZNVER1-NEXT: testq %rdi, %rdi # sched: [1:0.25] 15721 ; ZNVER1-NEXT: testq %rdi, (%rsi) # sched: [5:0.50] 15722 ; ZNVER1-NEXT: #NO_APP 15723 ; ZNVER1-NEXT: retq # sched: [1:0.50] 15724 tail call void asm "testq $2, %RAX \0A\09 testq $2, $0 \0A\09 testq $2, $1 \0A\09 testq $0, $0 \0A\09 testq $0, $1", "r,*m,i"(i64 %a0, i64* %a1, i32 665536) nounwind 15725 ret void 15726 } 15727 15728 ; TODO: ud0, ud1 15729 define void @test_ud2() optsize { 15730 ; GENERIC-LABEL: test_ud2: 15731 ; GENERIC: # %bb.0: 15732 ; GENERIC-NEXT: #APP 15733 ; GENERIC-NEXT: ud2 # sched: [100:0.33] 15734 ; GENERIC-NEXT: #NO_APP 15735 ; GENERIC-NEXT: retq # sched: [1:1.00] 15736 ; 15737 ; ATOM-LABEL: test_ud2: 15738 ; ATOM: # %bb.0: 15739 ; ATOM-NEXT: #APP 15740 ; ATOM-NEXT: ud2 # sched: [100:0.50] 15741 ; ATOM-NEXT: #NO_APP 15742 ; ATOM-NEXT: retq # sched: [79:39.50] 15743 ; 15744 ; SLM-LABEL: test_ud2: 15745 ; SLM: # %bb.0: 15746 ; SLM-NEXT: #APP 15747 ; SLM-NEXT: ud2 # sched: [100:1.00] 15748 ; SLM-NEXT: #NO_APP 15749 ; SLM-NEXT: retq # sched: [4:1.00] 15750 ; 15751 ; SANDY-LABEL: test_ud2: 15752 ; SANDY: # %bb.0: 15753 ; SANDY-NEXT: #APP 15754 ; SANDY-NEXT: ud2 # sched: [100:0.33] 15755 ; SANDY-NEXT: #NO_APP 15756 ; SANDY-NEXT: retq # sched: [1:1.00] 15757 ; 15758 ; HASWELL-LABEL: test_ud2: 15759 ; HASWELL: # %bb.0: 15760 ; HASWELL-NEXT: #APP 15761 ; HASWELL-NEXT: ud2 # sched: [100:0.25] 15762 ; HASWELL-NEXT: #NO_APP 15763 ; HASWELL-NEXT: retq # sched: [7:1.00] 15764 ; 15765 ; BROADWELL-LABEL: test_ud2: 15766 ; BROADWELL: # %bb.0: 15767 ; BROADWELL-NEXT: #APP 15768 ; BROADWELL-NEXT: ud2 # sched: [100:0.25] 15769 ; BROADWELL-NEXT: #NO_APP 15770 ; BROADWELL-NEXT: retq # sched: [7:1.00] 15771 ; 15772 ; SKYLAKE-LABEL: test_ud2: 15773 ; SKYLAKE: # %bb.0: 15774 ; SKYLAKE-NEXT: #APP 15775 ; SKYLAKE-NEXT: ud2 # sched: [100:0.25] 15776 ; SKYLAKE-NEXT: #NO_APP 15777 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 15778 ; 15779 ; SKX-LABEL: test_ud2: 15780 ; SKX: # %bb.0: 15781 ; SKX-NEXT: #APP 15782 ; SKX-NEXT: ud2 # sched: [100:0.25] 15783 ; SKX-NEXT: #NO_APP 15784 ; SKX-NEXT: retq # sched: [7:1.00] 15785 ; 15786 ; BTVER2-LABEL: test_ud2: 15787 ; BTVER2: # %bb.0: 15788 ; BTVER2-NEXT: #APP 15789 ; BTVER2-NEXT: ud2 # sched: [100:0.50] 15790 ; BTVER2-NEXT: #NO_APP 15791 ; BTVER2-NEXT: retq # sched: [4:1.00] 15792 ; 15793 ; ZNVER1-LABEL: test_ud2: 15794 ; ZNVER1: # %bb.0: 15795 ; ZNVER1-NEXT: #APP 15796 ; ZNVER1-NEXT: ud2 # sched: [100:0.25] 15797 ; ZNVER1-NEXT: #NO_APP 15798 ; ZNVER1-NEXT: retq # sched: [1:0.50] 15799 call void asm sideeffect "ud2", ""() 15800 ret void 15801 } 15802 15803 ; TODO - test_verr 15804 ; TODO - test_verw 15805 ; TODO - test_vmload 15806 ; TODO - test_vmmcall 15807 ; TODO - test_vmrun 15808 ; TODO - test_vmsave 15809 ; TODO - test_wbinvd 15810 15811 define void @test_xadd_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 15812 ; GENERIC-LABEL: test_xadd_8: 15813 ; GENERIC: # %bb.0: 15814 ; GENERIC-NEXT: #APP 15815 ; GENERIC-NEXT: xaddb %dil, %sil # sched: [2:1.00] 15816 ; GENERIC-NEXT: xaddb %dil, (%rdx) # sched: [8:1.00] 15817 ; GENERIC-NEXT: #NO_APP 15818 ; GENERIC-NEXT: retq # sched: [1:1.00] 15819 ; 15820 ; ATOM-LABEL: test_xadd_8: 15821 ; ATOM: # %bb.0: 15822 ; ATOM-NEXT: #APP 15823 ; ATOM-NEXT: xaddb %dil, %sil # sched: [2:1.00] 15824 ; ATOM-NEXT: xaddb %dil, (%rdx) # sched: [3:1.50] 15825 ; ATOM-NEXT: #NO_APP 15826 ; ATOM-NEXT: retq # sched: [79:39.50] 15827 ; 15828 ; SLM-LABEL: test_xadd_8: 15829 ; SLM: # %bb.0: 15830 ; SLM-NEXT: #APP 15831 ; SLM-NEXT: xaddb %dil, %sil # sched: [1:0.50] 15832 ; SLM-NEXT: xaddb %dil, (%rdx) # sched: [4:2.00] 15833 ; SLM-NEXT: #NO_APP 15834 ; SLM-NEXT: retq # sched: [4:1.00] 15835 ; 15836 ; SANDY-LABEL: test_xadd_8: 15837 ; SANDY: # %bb.0: 15838 ; SANDY-NEXT: #APP 15839 ; SANDY-NEXT: xaddb %dil, %sil # sched: [2:1.00] 15840 ; SANDY-NEXT: xaddb %dil, (%rdx) # sched: [8:1.00] 15841 ; SANDY-NEXT: #NO_APP 15842 ; SANDY-NEXT: retq # sched: [1:1.00] 15843 ; 15844 ; HASWELL-LABEL: test_xadd_8: 15845 ; HASWELL: # %bb.0: 15846 ; HASWELL-NEXT: #APP 15847 ; HASWELL-NEXT: xaddb %dil, %sil # sched: [2:0.75] 15848 ; HASWELL-NEXT: xaddb %dil, (%rdx) # sched: [8:1.00] 15849 ; HASWELL-NEXT: #NO_APP 15850 ; HASWELL-NEXT: retq # sched: [7:1.00] 15851 ; 15852 ; BROADWELL-LABEL: test_xadd_8: 15853 ; BROADWELL: # %bb.0: 15854 ; BROADWELL-NEXT: #APP 15855 ; BROADWELL-NEXT: xaddb %dil, %sil # sched: [2:0.75] 15856 ; BROADWELL-NEXT: xaddb %dil, (%rdx) # sched: [7:1.00] 15857 ; BROADWELL-NEXT: #NO_APP 15858 ; BROADWELL-NEXT: retq # sched: [7:1.00] 15859 ; 15860 ; SKYLAKE-LABEL: test_xadd_8: 15861 ; SKYLAKE: # %bb.0: 15862 ; SKYLAKE-NEXT: #APP 15863 ; SKYLAKE-NEXT: xaddb %dil, %sil # sched: [2:0.75] 15864 ; SKYLAKE-NEXT: xaddb %dil, (%rdx) # sched: [7:1.00] 15865 ; SKYLAKE-NEXT: #NO_APP 15866 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 15867 ; 15868 ; SKX-LABEL: test_xadd_8: 15869 ; SKX: # %bb.0: 15870 ; SKX-NEXT: #APP 15871 ; SKX-NEXT: xaddb %dil, %sil # sched: [2:0.75] 15872 ; SKX-NEXT: xaddb %dil, (%rdx) # sched: [7:1.00] 15873 ; SKX-NEXT: #NO_APP 15874 ; SKX-NEXT: retq # sched: [7:1.00] 15875 ; 15876 ; BTVER2-LABEL: test_xadd_8: 15877 ; BTVER2: # %bb.0: 15878 ; BTVER2-NEXT: #APP 15879 ; BTVER2-NEXT: xaddb %dil, %sil # sched: [1:0.50] 15880 ; BTVER2-NEXT: xaddb %dil, (%rdx) # sched: [4:1.00] 15881 ; BTVER2-NEXT: #NO_APP 15882 ; BTVER2-NEXT: retq # sched: [4:1.00] 15883 ; 15884 ; ZNVER1-LABEL: test_xadd_8: 15885 ; ZNVER1: # %bb.0: 15886 ; ZNVER1-NEXT: #APP 15887 ; ZNVER1-NEXT: xaddb %dil, %sil # sched: [1:0.25] 15888 ; ZNVER1-NEXT: xaddb %dil, (%rdx) # sched: [100:0.25] 15889 ; ZNVER1-NEXT: #NO_APP 15890 ; ZNVER1-NEXT: retq # sched: [1:0.50] 15891 tail call void asm "xaddb $0, $1 \0A\09 xaddb $0, $2", "r,r,*m"(i8 %a0, i8 %a1, i8 *%a2) nounwind 15892 ret void 15893 } 15894 define void @test_xadd_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 15895 ; GENERIC-LABEL: test_xadd_16: 15896 ; GENERIC: # %bb.0: 15897 ; GENERIC-NEXT: #APP 15898 ; GENERIC-NEXT: xaddw %di, %si # sched: [2:1.00] 15899 ; GENERIC-NEXT: xaddw %di, (%rdx) # sched: [8:1.00] 15900 ; GENERIC-NEXT: #NO_APP 15901 ; GENERIC-NEXT: retq # sched: [1:1.00] 15902 ; 15903 ; ATOM-LABEL: test_xadd_16: 15904 ; ATOM: # %bb.0: 15905 ; ATOM-NEXT: #APP 15906 ; ATOM-NEXT: xaddw %di, %si # sched: [2:1.00] 15907 ; ATOM-NEXT: xaddw %di, (%rdx) # sched: [3:1.50] 15908 ; ATOM-NEXT: #NO_APP 15909 ; ATOM-NEXT: retq # sched: [79:39.50] 15910 ; 15911 ; SLM-LABEL: test_xadd_16: 15912 ; SLM: # %bb.0: 15913 ; SLM-NEXT: #APP 15914 ; SLM-NEXT: xaddw %di, %si # sched: [1:0.50] 15915 ; SLM-NEXT: xaddw %di, (%rdx) # sched: [4:2.00] 15916 ; SLM-NEXT: #NO_APP 15917 ; SLM-NEXT: retq # sched: [4:1.00] 15918 ; 15919 ; SANDY-LABEL: test_xadd_16: 15920 ; SANDY: # %bb.0: 15921 ; SANDY-NEXT: #APP 15922 ; SANDY-NEXT: xaddw %di, %si # sched: [2:1.00] 15923 ; SANDY-NEXT: xaddw %di, (%rdx) # sched: [8:1.00] 15924 ; SANDY-NEXT: #NO_APP 15925 ; SANDY-NEXT: retq # sched: [1:1.00] 15926 ; 15927 ; HASWELL-LABEL: test_xadd_16: 15928 ; HASWELL: # %bb.0: 15929 ; HASWELL-NEXT: #APP 15930 ; HASWELL-NEXT: xaddw %di, %si # sched: [2:0.75] 15931 ; HASWELL-NEXT: xaddw %di, (%rdx) # sched: [8:1.00] 15932 ; HASWELL-NEXT: #NO_APP 15933 ; HASWELL-NEXT: retq # sched: [7:1.00] 15934 ; 15935 ; BROADWELL-LABEL: test_xadd_16: 15936 ; BROADWELL: # %bb.0: 15937 ; BROADWELL-NEXT: #APP 15938 ; BROADWELL-NEXT: xaddw %di, %si # sched: [2:0.75] 15939 ; BROADWELL-NEXT: xaddw %di, (%rdx) # sched: [7:1.00] 15940 ; BROADWELL-NEXT: #NO_APP 15941 ; BROADWELL-NEXT: retq # sched: [7:1.00] 15942 ; 15943 ; SKYLAKE-LABEL: test_xadd_16: 15944 ; SKYLAKE: # %bb.0: 15945 ; SKYLAKE-NEXT: #APP 15946 ; SKYLAKE-NEXT: xaddw %di, %si # sched: [2:0.75] 15947 ; SKYLAKE-NEXT: xaddw %di, (%rdx) # sched: [7:1.00] 15948 ; SKYLAKE-NEXT: #NO_APP 15949 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 15950 ; 15951 ; SKX-LABEL: test_xadd_16: 15952 ; SKX: # %bb.0: 15953 ; SKX-NEXT: #APP 15954 ; SKX-NEXT: xaddw %di, %si # sched: [2:0.75] 15955 ; SKX-NEXT: xaddw %di, (%rdx) # sched: [7:1.00] 15956 ; SKX-NEXT: #NO_APP 15957 ; SKX-NEXT: retq # sched: [7:1.00] 15958 ; 15959 ; BTVER2-LABEL: test_xadd_16: 15960 ; BTVER2: # %bb.0: 15961 ; BTVER2-NEXT: #APP 15962 ; BTVER2-NEXT: xaddw %di, %si # sched: [1:0.50] 15963 ; BTVER2-NEXT: xaddw %di, (%rdx) # sched: [4:1.00] 15964 ; BTVER2-NEXT: #NO_APP 15965 ; BTVER2-NEXT: retq # sched: [4:1.00] 15966 ; 15967 ; ZNVER1-LABEL: test_xadd_16: 15968 ; ZNVER1: # %bb.0: 15969 ; ZNVER1-NEXT: #APP 15970 ; ZNVER1-NEXT: xaddw %di, %si # sched: [1:0.25] 15971 ; ZNVER1-NEXT: xaddw %di, (%rdx) # sched: [100:0.25] 15972 ; ZNVER1-NEXT: #NO_APP 15973 ; ZNVER1-NEXT: retq # sched: [1:0.50] 15974 tail call void asm "xaddw $0, $1 \0A\09 xaddw $0, $2", "r,r,*m"(i16 %a0, i16 %a1, i16 *%a2) nounwind 15975 ret void 15976 } 15977 define void @test_xadd_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 15978 ; GENERIC-LABEL: test_xadd_32: 15979 ; GENERIC: # %bb.0: 15980 ; GENERIC-NEXT: #APP 15981 ; GENERIC-NEXT: xaddl %edi, %esi # sched: [2:1.00] 15982 ; GENERIC-NEXT: xaddl %edi, (%rdx) # sched: [8:1.00] 15983 ; GENERIC-NEXT: #NO_APP 15984 ; GENERIC-NEXT: retq # sched: [1:1.00] 15985 ; 15986 ; ATOM-LABEL: test_xadd_32: 15987 ; ATOM: # %bb.0: 15988 ; ATOM-NEXT: #APP 15989 ; ATOM-NEXT: xaddl %edi, %esi # sched: [2:1.00] 15990 ; ATOM-NEXT: xaddl %edi, (%rdx) # sched: [3:1.50] 15991 ; ATOM-NEXT: #NO_APP 15992 ; ATOM-NEXT: retq # sched: [79:39.50] 15993 ; 15994 ; SLM-LABEL: test_xadd_32: 15995 ; SLM: # %bb.0: 15996 ; SLM-NEXT: #APP 15997 ; SLM-NEXT: xaddl %edi, %esi # sched: [1:0.50] 15998 ; SLM-NEXT: xaddl %edi, (%rdx) # sched: [4:2.00] 15999 ; SLM-NEXT: #NO_APP 16000 ; SLM-NEXT: retq # sched: [4:1.00] 16001 ; 16002 ; SANDY-LABEL: test_xadd_32: 16003 ; SANDY: # %bb.0: 16004 ; SANDY-NEXT: #APP 16005 ; SANDY-NEXT: xaddl %edi, %esi # sched: [2:1.00] 16006 ; SANDY-NEXT: xaddl %edi, (%rdx) # sched: [8:1.00] 16007 ; SANDY-NEXT: #NO_APP 16008 ; SANDY-NEXT: retq # sched: [1:1.00] 16009 ; 16010 ; HASWELL-LABEL: test_xadd_32: 16011 ; HASWELL: # %bb.0: 16012 ; HASWELL-NEXT: #APP 16013 ; HASWELL-NEXT: xaddl %edi, %esi # sched: [2:0.75] 16014 ; HASWELL-NEXT: xaddl %edi, (%rdx) # sched: [8:1.00] 16015 ; HASWELL-NEXT: #NO_APP 16016 ; HASWELL-NEXT: retq # sched: [7:1.00] 16017 ; 16018 ; BROADWELL-LABEL: test_xadd_32: 16019 ; BROADWELL: # %bb.0: 16020 ; BROADWELL-NEXT: #APP 16021 ; BROADWELL-NEXT: xaddl %edi, %esi # sched: [2:0.75] 16022 ; BROADWELL-NEXT: xaddl %edi, (%rdx) # sched: [7:1.00] 16023 ; BROADWELL-NEXT: #NO_APP 16024 ; BROADWELL-NEXT: retq # sched: [7:1.00] 16025 ; 16026 ; SKYLAKE-LABEL: test_xadd_32: 16027 ; SKYLAKE: # %bb.0: 16028 ; SKYLAKE-NEXT: #APP 16029 ; SKYLAKE-NEXT: xaddl %edi, %esi # sched: [2:0.75] 16030 ; SKYLAKE-NEXT: xaddl %edi, (%rdx) # sched: [7:1.00] 16031 ; SKYLAKE-NEXT: #NO_APP 16032 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 16033 ; 16034 ; SKX-LABEL: test_xadd_32: 16035 ; SKX: # %bb.0: 16036 ; SKX-NEXT: #APP 16037 ; SKX-NEXT: xaddl %edi, %esi # sched: [2:0.75] 16038 ; SKX-NEXT: xaddl %edi, (%rdx) # sched: [7:1.00] 16039 ; SKX-NEXT: #NO_APP 16040 ; SKX-NEXT: retq # sched: [7:1.00] 16041 ; 16042 ; BTVER2-LABEL: test_xadd_32: 16043 ; BTVER2: # %bb.0: 16044 ; BTVER2-NEXT: #APP 16045 ; BTVER2-NEXT: xaddl %edi, %esi # sched: [1:0.50] 16046 ; BTVER2-NEXT: xaddl %edi, (%rdx) # sched: [4:1.00] 16047 ; BTVER2-NEXT: #NO_APP 16048 ; BTVER2-NEXT: retq # sched: [4:1.00] 16049 ; 16050 ; ZNVER1-LABEL: test_xadd_32: 16051 ; ZNVER1: # %bb.0: 16052 ; ZNVER1-NEXT: #APP 16053 ; ZNVER1-NEXT: xaddl %edi, %esi # sched: [1:0.25] 16054 ; ZNVER1-NEXT: xaddl %edi, (%rdx) # sched: [100:0.25] 16055 ; ZNVER1-NEXT: #NO_APP 16056 ; ZNVER1-NEXT: retq # sched: [1:0.50] 16057 tail call void asm "xaddl $0, $1 \0A\09 xaddl $0, $2", "r,r,*m"(i32 %a0, i32 %a1, i32 *%a2) nounwind 16058 ret void 16059 } 16060 define void @test_xadd_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 16061 ; GENERIC-LABEL: test_xadd_64: 16062 ; GENERIC: # %bb.0: 16063 ; GENERIC-NEXT: #APP 16064 ; GENERIC-NEXT: xaddq %rdi, %rsi # sched: [2:1.00] 16065 ; GENERIC-NEXT: xaddq %rdi, (%rdx) # sched: [8:1.00] 16066 ; GENERIC-NEXT: #NO_APP 16067 ; GENERIC-NEXT: retq # sched: [1:1.00] 16068 ; 16069 ; ATOM-LABEL: test_xadd_64: 16070 ; ATOM: # %bb.0: 16071 ; ATOM-NEXT: #APP 16072 ; ATOM-NEXT: xaddq %rdi, %rsi # sched: [2:1.00] 16073 ; ATOM-NEXT: xaddq %rdi, (%rdx) # sched: [3:1.50] 16074 ; ATOM-NEXT: #NO_APP 16075 ; ATOM-NEXT: retq # sched: [79:39.50] 16076 ; 16077 ; SLM-LABEL: test_xadd_64: 16078 ; SLM: # %bb.0: 16079 ; SLM-NEXT: #APP 16080 ; SLM-NEXT: xaddq %rdi, %rsi # sched: [1:0.50] 16081 ; SLM-NEXT: xaddq %rdi, (%rdx) # sched: [4:2.00] 16082 ; SLM-NEXT: #NO_APP 16083 ; SLM-NEXT: retq # sched: [4:1.00] 16084 ; 16085 ; SANDY-LABEL: test_xadd_64: 16086 ; SANDY: # %bb.0: 16087 ; SANDY-NEXT: #APP 16088 ; SANDY-NEXT: xaddq %rdi, %rsi # sched: [2:1.00] 16089 ; SANDY-NEXT: xaddq %rdi, (%rdx) # sched: [8:1.00] 16090 ; SANDY-NEXT: #NO_APP 16091 ; SANDY-NEXT: retq # sched: [1:1.00] 16092 ; 16093 ; HASWELL-LABEL: test_xadd_64: 16094 ; HASWELL: # %bb.0: 16095 ; HASWELL-NEXT: #APP 16096 ; HASWELL-NEXT: xaddq %rdi, %rsi # sched: [2:0.75] 16097 ; HASWELL-NEXT: xaddq %rdi, (%rdx) # sched: [8:1.00] 16098 ; HASWELL-NEXT: #NO_APP 16099 ; HASWELL-NEXT: retq # sched: [7:1.00] 16100 ; 16101 ; BROADWELL-LABEL: test_xadd_64: 16102 ; BROADWELL: # %bb.0: 16103 ; BROADWELL-NEXT: #APP 16104 ; BROADWELL-NEXT: xaddq %rdi, %rsi # sched: [2:0.75] 16105 ; BROADWELL-NEXT: xaddq %rdi, (%rdx) # sched: [7:1.00] 16106 ; BROADWELL-NEXT: #NO_APP 16107 ; BROADWELL-NEXT: retq # sched: [7:1.00] 16108 ; 16109 ; SKYLAKE-LABEL: test_xadd_64: 16110 ; SKYLAKE: # %bb.0: 16111 ; SKYLAKE-NEXT: #APP 16112 ; SKYLAKE-NEXT: xaddq %rdi, %rsi # sched: [2:0.75] 16113 ; SKYLAKE-NEXT: xaddq %rdi, (%rdx) # sched: [7:1.00] 16114 ; SKYLAKE-NEXT: #NO_APP 16115 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 16116 ; 16117 ; SKX-LABEL: test_xadd_64: 16118 ; SKX: # %bb.0: 16119 ; SKX-NEXT: #APP 16120 ; SKX-NEXT: xaddq %rdi, %rsi # sched: [2:0.75] 16121 ; SKX-NEXT: xaddq %rdi, (%rdx) # sched: [7:1.00] 16122 ; SKX-NEXT: #NO_APP 16123 ; SKX-NEXT: retq # sched: [7:1.00] 16124 ; 16125 ; BTVER2-LABEL: test_xadd_64: 16126 ; BTVER2: # %bb.0: 16127 ; BTVER2-NEXT: #APP 16128 ; BTVER2-NEXT: xaddq %rdi, %rsi # sched: [1:0.50] 16129 ; BTVER2-NEXT: xaddq %rdi, (%rdx) # sched: [4:1.00] 16130 ; BTVER2-NEXT: #NO_APP 16131 ; BTVER2-NEXT: retq # sched: [4:1.00] 16132 ; 16133 ; ZNVER1-LABEL: test_xadd_64: 16134 ; ZNVER1: # %bb.0: 16135 ; ZNVER1-NEXT: #APP 16136 ; ZNVER1-NEXT: xaddq %rdi, %rsi # sched: [1:0.25] 16137 ; ZNVER1-NEXT: xaddq %rdi, (%rdx) # sched: [100:0.25] 16138 ; ZNVER1-NEXT: #NO_APP 16139 ; ZNVER1-NEXT: retq # sched: [1:0.50] 16140 tail call void asm "xaddq $0, $1 \0A\09 xaddq $0, $2", "r,r,*m"(i64 %a0, i64 %a1, i64 *%a2) nounwind 16141 ret void 16142 } 16143 16144 define void @test_xchg_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 16145 ; GENERIC-LABEL: test_xchg_8: 16146 ; GENERIC: # %bb.0: 16147 ; GENERIC-NEXT: #APP 16148 ; GENERIC-NEXT: xchgb %sil, %dil # sched: [2:1.00] 16149 ; GENERIC-NEXT: xchgb %dil, (%rdx) # sched: [6:1.00] 16150 ; GENERIC-NEXT: #NO_APP 16151 ; GENERIC-NEXT: retq # sched: [1:1.00] 16152 ; 16153 ; ATOM-LABEL: test_xchg_8: 16154 ; ATOM: # %bb.0: 16155 ; ATOM-NEXT: #APP 16156 ; ATOM-NEXT: xchgb %sil, %dil # sched: [2:1.00] 16157 ; ATOM-NEXT: xchgb %dil, (%rdx) # sched: [3:1.50] 16158 ; ATOM-NEXT: #NO_APP 16159 ; ATOM-NEXT: retq # sched: [79:39.50] 16160 ; 16161 ; SLM-LABEL: test_xchg_8: 16162 ; SLM: # %bb.0: 16163 ; SLM-NEXT: #APP 16164 ; SLM-NEXT: xchgb %sil, %dil # sched: [1:0.50] 16165 ; SLM-NEXT: xchgb %dil, (%rdx) # sched: [4:2.00] 16166 ; SLM-NEXT: #NO_APP 16167 ; SLM-NEXT: retq # sched: [4:1.00] 16168 ; 16169 ; SANDY-LABEL: test_xchg_8: 16170 ; SANDY: # %bb.0: 16171 ; SANDY-NEXT: #APP 16172 ; SANDY-NEXT: xchgb %sil, %dil # sched: [2:1.00] 16173 ; SANDY-NEXT: xchgb %dil, (%rdx) # sched: [6:1.00] 16174 ; SANDY-NEXT: #NO_APP 16175 ; SANDY-NEXT: retq # sched: [1:1.00] 16176 ; 16177 ; HASWELL-LABEL: test_xchg_8: 16178 ; HASWELL: # %bb.0: 16179 ; HASWELL-NEXT: #APP 16180 ; HASWELL-NEXT: xchgb %sil, %dil # sched: [2:0.75] 16181 ; HASWELL-NEXT: xchgb %dil, (%rdx) # sched: [9:1.00] 16182 ; HASWELL-NEXT: #NO_APP 16183 ; HASWELL-NEXT: retq # sched: [7:1.00] 16184 ; 16185 ; BROADWELL-LABEL: test_xchg_8: 16186 ; BROADWELL: # %bb.0: 16187 ; BROADWELL-NEXT: #APP 16188 ; BROADWELL-NEXT: xchgb %sil, %dil # sched: [2:0.75] 16189 ; BROADWELL-NEXT: xchgb %dil, (%rdx) # sched: [8:1.00] 16190 ; BROADWELL-NEXT: #NO_APP 16191 ; BROADWELL-NEXT: retq # sched: [7:1.00] 16192 ; 16193 ; SKYLAKE-LABEL: test_xchg_8: 16194 ; SKYLAKE: # %bb.0: 16195 ; SKYLAKE-NEXT: #APP 16196 ; SKYLAKE-NEXT: xchgb %sil, %dil # sched: [2:0.75] 16197 ; SKYLAKE-NEXT: xchgb %dil, (%rdx) # sched: [10:1.25] 16198 ; SKYLAKE-NEXT: #NO_APP 16199 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 16200 ; 16201 ; SKX-LABEL: test_xchg_8: 16202 ; SKX: # %bb.0: 16203 ; SKX-NEXT: #APP 16204 ; SKX-NEXT: xchgb %sil, %dil # sched: [2:0.75] 16205 ; SKX-NEXT: xchgb %dil, (%rdx) # sched: [10:1.25] 16206 ; SKX-NEXT: #NO_APP 16207 ; SKX-NEXT: retq # sched: [7:1.00] 16208 ; 16209 ; BTVER2-LABEL: test_xchg_8: 16210 ; BTVER2: # %bb.0: 16211 ; BTVER2-NEXT: #APP 16212 ; BTVER2-NEXT: xchgb %sil, %dil # sched: [1:0.50] 16213 ; BTVER2-NEXT: xchgb %dil, (%rdx) # sched: [4:1.00] 16214 ; BTVER2-NEXT: #NO_APP 16215 ; BTVER2-NEXT: retq # sched: [4:1.00] 16216 ; 16217 ; ZNVER1-LABEL: test_xchg_8: 16218 ; ZNVER1: # %bb.0: 16219 ; ZNVER1-NEXT: #APP 16220 ; ZNVER1-NEXT: xchgb %sil, %dil # sched: [1:0.50] 16221 ; ZNVER1-NEXT: xchgb %dil, (%rdx) # sched: [5:0.50] 16222 ; ZNVER1-NEXT: #NO_APP 16223 ; ZNVER1-NEXT: retq # sched: [1:0.50] 16224 tail call void asm "xchg $1, $0 \0A\09 xchg $2, $0", "r,r,*m"(i8 %a0, i8 %a1, i8 *%a2) nounwind 16225 ret void 16226 } 16227 define void @test_xchg_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 16228 ; GENERIC-LABEL: test_xchg_16: 16229 ; GENERIC: # %bb.0: 16230 ; GENERIC-NEXT: #APP 16231 ; GENERIC-NEXT: xchgw %di, %ax # sched: [2:1.00] 16232 ; GENERIC-NEXT: xchgw %si, %di # sched: [2:1.00] 16233 ; GENERIC-NEXT: xchgw %di, (%rdx) # sched: [6:1.00] 16234 ; GENERIC-NEXT: #NO_APP 16235 ; GENERIC-NEXT: retq # sched: [1:1.00] 16236 ; 16237 ; ATOM-LABEL: test_xchg_16: 16238 ; ATOM: # %bb.0: 16239 ; ATOM-NEXT: #APP 16240 ; ATOM-NEXT: xchgw %di, %ax # sched: [2:1.00] 16241 ; ATOM-NEXT: xchgw %si, %di # sched: [2:1.00] 16242 ; ATOM-NEXT: xchgw %di, (%rdx) # sched: [3:1.50] 16243 ; ATOM-NEXT: #NO_APP 16244 ; ATOM-NEXT: retq # sched: [79:39.50] 16245 ; 16246 ; SLM-LABEL: test_xchg_16: 16247 ; SLM: # %bb.0: 16248 ; SLM-NEXT: #APP 16249 ; SLM-NEXT: xchgw %di, %ax # sched: [1:0.50] 16250 ; SLM-NEXT: xchgw %si, %di # sched: [1:0.50] 16251 ; SLM-NEXT: xchgw %di, (%rdx) # sched: [4:2.00] 16252 ; SLM-NEXT: #NO_APP 16253 ; SLM-NEXT: retq # sched: [4:1.00] 16254 ; 16255 ; SANDY-LABEL: test_xchg_16: 16256 ; SANDY: # %bb.0: 16257 ; SANDY-NEXT: #APP 16258 ; SANDY-NEXT: xchgw %di, %ax # sched: [2:1.00] 16259 ; SANDY-NEXT: xchgw %si, %di # sched: [2:1.00] 16260 ; SANDY-NEXT: xchgw %di, (%rdx) # sched: [6:1.00] 16261 ; SANDY-NEXT: #NO_APP 16262 ; SANDY-NEXT: retq # sched: [1:1.00] 16263 ; 16264 ; HASWELL-LABEL: test_xchg_16: 16265 ; HASWELL: # %bb.0: 16266 ; HASWELL-NEXT: #APP 16267 ; HASWELL-NEXT: xchgw %di, %ax # sched: [2:0.75] 16268 ; HASWELL-NEXT: xchgw %si, %di # sched: [2:0.75] 16269 ; HASWELL-NEXT: xchgw %di, (%rdx) # sched: [9:1.00] 16270 ; HASWELL-NEXT: #NO_APP 16271 ; HASWELL-NEXT: retq # sched: [7:1.00] 16272 ; 16273 ; BROADWELL-LABEL: test_xchg_16: 16274 ; BROADWELL: # %bb.0: 16275 ; BROADWELL-NEXT: #APP 16276 ; BROADWELL-NEXT: xchgw %di, %ax # sched: [2:0.75] 16277 ; BROADWELL-NEXT: xchgw %si, %di # sched: [2:0.75] 16278 ; BROADWELL-NEXT: xchgw %di, (%rdx) # sched: [8:1.00] 16279 ; BROADWELL-NEXT: #NO_APP 16280 ; BROADWELL-NEXT: retq # sched: [7:1.00] 16281 ; 16282 ; SKYLAKE-LABEL: test_xchg_16: 16283 ; SKYLAKE: # %bb.0: 16284 ; SKYLAKE-NEXT: #APP 16285 ; SKYLAKE-NEXT: xchgw %di, %ax # sched: [2:0.75] 16286 ; SKYLAKE-NEXT: xchgw %si, %di # sched: [2:0.75] 16287 ; SKYLAKE-NEXT: xchgw %di, (%rdx) # sched: [10:1.25] 16288 ; SKYLAKE-NEXT: #NO_APP 16289 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 16290 ; 16291 ; SKX-LABEL: test_xchg_16: 16292 ; SKX: # %bb.0: 16293 ; SKX-NEXT: #APP 16294 ; SKX-NEXT: xchgw %di, %ax # sched: [2:0.75] 16295 ; SKX-NEXT: xchgw %si, %di # sched: [2:0.75] 16296 ; SKX-NEXT: xchgw %di, (%rdx) # sched: [10:1.25] 16297 ; SKX-NEXT: #NO_APP 16298 ; SKX-NEXT: retq # sched: [7:1.00] 16299 ; 16300 ; BTVER2-LABEL: test_xchg_16: 16301 ; BTVER2: # %bb.0: 16302 ; BTVER2-NEXT: #APP 16303 ; BTVER2-NEXT: xchgw %di, %ax # sched: [1:0.50] 16304 ; BTVER2-NEXT: xchgw %si, %di # sched: [1:0.50] 16305 ; BTVER2-NEXT: xchgw %di, (%rdx) # sched: [4:1.00] 16306 ; BTVER2-NEXT: #NO_APP 16307 ; BTVER2-NEXT: retq # sched: [4:1.00] 16308 ; 16309 ; ZNVER1-LABEL: test_xchg_16: 16310 ; ZNVER1: # %bb.0: 16311 ; ZNVER1-NEXT: #APP 16312 ; ZNVER1-NEXT: xchgw %di, %ax # sched: [1:0.50] 16313 ; ZNVER1-NEXT: xchgw %si, %di # sched: [1:0.50] 16314 ; ZNVER1-NEXT: xchgw %di, (%rdx) # sched: [5:0.50] 16315 ; ZNVER1-NEXT: #NO_APP 16316 ; ZNVER1-NEXT: retq # sched: [1:0.50] 16317 tail call void asm "xchg %AX, $0 \0A\09 xchg $1, $0 \0A\09 xchg $2, $0", "r,r,*m"(i16 %a0, i16 %a1, i16 *%a2) nounwind 16318 ret void 16319 } 16320 define void @test_xchg_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 16321 ; GENERIC-LABEL: test_xchg_32: 16322 ; GENERIC: # %bb.0: 16323 ; GENERIC-NEXT: #APP 16324 ; GENERIC-NEXT: xchgl %edi, %eax # sched: [2:1.00] 16325 ; GENERIC-NEXT: xchgl %esi, %edi # sched: [2:1.00] 16326 ; GENERIC-NEXT: xchgl %edi, (%rdx) # sched: [6:1.00] 16327 ; GENERIC-NEXT: #NO_APP 16328 ; GENERIC-NEXT: retq # sched: [1:1.00] 16329 ; 16330 ; ATOM-LABEL: test_xchg_32: 16331 ; ATOM: # %bb.0: 16332 ; ATOM-NEXT: #APP 16333 ; ATOM-NEXT: xchgl %edi, %eax # sched: [2:1.00] 16334 ; ATOM-NEXT: xchgl %esi, %edi # sched: [2:1.00] 16335 ; ATOM-NEXT: xchgl %edi, (%rdx) # sched: [3:1.50] 16336 ; ATOM-NEXT: #NO_APP 16337 ; ATOM-NEXT: retq # sched: [79:39.50] 16338 ; 16339 ; SLM-LABEL: test_xchg_32: 16340 ; SLM: # %bb.0: 16341 ; SLM-NEXT: #APP 16342 ; SLM-NEXT: xchgl %edi, %eax # sched: [1:0.50] 16343 ; SLM-NEXT: xchgl %esi, %edi # sched: [1:0.50] 16344 ; SLM-NEXT: xchgl %edi, (%rdx) # sched: [4:2.00] 16345 ; SLM-NEXT: #NO_APP 16346 ; SLM-NEXT: retq # sched: [4:1.00] 16347 ; 16348 ; SANDY-LABEL: test_xchg_32: 16349 ; SANDY: # %bb.0: 16350 ; SANDY-NEXT: #APP 16351 ; SANDY-NEXT: xchgl %edi, %eax # sched: [2:1.00] 16352 ; SANDY-NEXT: xchgl %esi, %edi # sched: [2:1.00] 16353 ; SANDY-NEXT: xchgl %edi, (%rdx) # sched: [6:1.00] 16354 ; SANDY-NEXT: #NO_APP 16355 ; SANDY-NEXT: retq # sched: [1:1.00] 16356 ; 16357 ; HASWELL-LABEL: test_xchg_32: 16358 ; HASWELL: # %bb.0: 16359 ; HASWELL-NEXT: #APP 16360 ; HASWELL-NEXT: xchgl %edi, %eax # sched: [2:0.75] 16361 ; HASWELL-NEXT: xchgl %esi, %edi # sched: [2:0.75] 16362 ; HASWELL-NEXT: xchgl %edi, (%rdx) # sched: [9:1.00] 16363 ; HASWELL-NEXT: #NO_APP 16364 ; HASWELL-NEXT: retq # sched: [7:1.00] 16365 ; 16366 ; BROADWELL-LABEL: test_xchg_32: 16367 ; BROADWELL: # %bb.0: 16368 ; BROADWELL-NEXT: #APP 16369 ; BROADWELL-NEXT: xchgl %edi, %eax # sched: [2:0.75] 16370 ; BROADWELL-NEXT: xchgl %esi, %edi # sched: [2:0.75] 16371 ; BROADWELL-NEXT: xchgl %edi, (%rdx) # sched: [8:1.00] 16372 ; BROADWELL-NEXT: #NO_APP 16373 ; BROADWELL-NEXT: retq # sched: [7:1.00] 16374 ; 16375 ; SKYLAKE-LABEL: test_xchg_32: 16376 ; SKYLAKE: # %bb.0: 16377 ; SKYLAKE-NEXT: #APP 16378 ; SKYLAKE-NEXT: xchgl %edi, %eax # sched: [2:0.75] 16379 ; SKYLAKE-NEXT: xchgl %esi, %edi # sched: [2:0.75] 16380 ; SKYLAKE-NEXT: xchgl %edi, (%rdx) # sched: [10:1.25] 16381 ; SKYLAKE-NEXT: #NO_APP 16382 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 16383 ; 16384 ; SKX-LABEL: test_xchg_32: 16385 ; SKX: # %bb.0: 16386 ; SKX-NEXT: #APP 16387 ; SKX-NEXT: xchgl %edi, %eax # sched: [2:0.75] 16388 ; SKX-NEXT: xchgl %esi, %edi # sched: [2:0.75] 16389 ; SKX-NEXT: xchgl %edi, (%rdx) # sched: [10:1.25] 16390 ; SKX-NEXT: #NO_APP 16391 ; SKX-NEXT: retq # sched: [7:1.00] 16392 ; 16393 ; BTVER2-LABEL: test_xchg_32: 16394 ; BTVER2: # %bb.0: 16395 ; BTVER2-NEXT: #APP 16396 ; BTVER2-NEXT: xchgl %edi, %eax # sched: [1:0.50] 16397 ; BTVER2-NEXT: xchgl %esi, %edi # sched: [1:0.50] 16398 ; BTVER2-NEXT: xchgl %edi, (%rdx) # sched: [4:1.00] 16399 ; BTVER2-NEXT: #NO_APP 16400 ; BTVER2-NEXT: retq # sched: [4:1.00] 16401 ; 16402 ; ZNVER1-LABEL: test_xchg_32: 16403 ; ZNVER1: # %bb.0: 16404 ; ZNVER1-NEXT: #APP 16405 ; ZNVER1-NEXT: xchgl %edi, %eax # sched: [1:0.50] 16406 ; ZNVER1-NEXT: xchgl %esi, %edi # sched: [1:0.50] 16407 ; ZNVER1-NEXT: xchgl %edi, (%rdx) # sched: [5:0.50] 16408 ; ZNVER1-NEXT: #NO_APP 16409 ; ZNVER1-NEXT: retq # sched: [1:0.50] 16410 tail call void asm "xchg %EAX, $0 \0A\09 xchg $1, $0 \0A\09 xchg $2, $0", "r,r,*m"(i32 %a0, i32 %a1, i32 *%a2) nounwind 16411 ret void 16412 } 16413 define void @test_xchg_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 16414 ; GENERIC-LABEL: test_xchg_64: 16415 ; GENERIC: # %bb.0: 16416 ; GENERIC-NEXT: #APP 16417 ; GENERIC-NEXT: xchgq %rdi, %rax # sched: [2:1.00] 16418 ; GENERIC-NEXT: xchgq %rsi, %rdi # sched: [2:1.00] 16419 ; GENERIC-NEXT: xchgq %rdi, (%rdx) # sched: [6:1.00] 16420 ; GENERIC-NEXT: #NO_APP 16421 ; GENERIC-NEXT: retq # sched: [1:1.00] 16422 ; 16423 ; ATOM-LABEL: test_xchg_64: 16424 ; ATOM: # %bb.0: 16425 ; ATOM-NEXT: #APP 16426 ; ATOM-NEXT: xchgq %rdi, %rax # sched: [2:1.00] 16427 ; ATOM-NEXT: xchgq %rsi, %rdi # sched: [2:1.00] 16428 ; ATOM-NEXT: xchgq %rdi, (%rdx) # sched: [3:1.50] 16429 ; ATOM-NEXT: #NO_APP 16430 ; ATOM-NEXT: retq # sched: [79:39.50] 16431 ; 16432 ; SLM-LABEL: test_xchg_64: 16433 ; SLM: # %bb.0: 16434 ; SLM-NEXT: #APP 16435 ; SLM-NEXT: xchgq %rdi, %rax # sched: [1:0.50] 16436 ; SLM-NEXT: xchgq %rsi, %rdi # sched: [1:0.50] 16437 ; SLM-NEXT: xchgq %rdi, (%rdx) # sched: [4:2.00] 16438 ; SLM-NEXT: #NO_APP 16439 ; SLM-NEXT: retq # sched: [4:1.00] 16440 ; 16441 ; SANDY-LABEL: test_xchg_64: 16442 ; SANDY: # %bb.0: 16443 ; SANDY-NEXT: #APP 16444 ; SANDY-NEXT: xchgq %rdi, %rax # sched: [2:1.00] 16445 ; SANDY-NEXT: xchgq %rsi, %rdi # sched: [2:1.00] 16446 ; SANDY-NEXT: xchgq %rdi, (%rdx) # sched: [6:1.00] 16447 ; SANDY-NEXT: #NO_APP 16448 ; SANDY-NEXT: retq # sched: [1:1.00] 16449 ; 16450 ; HASWELL-LABEL: test_xchg_64: 16451 ; HASWELL: # %bb.0: 16452 ; HASWELL-NEXT: #APP 16453 ; HASWELL-NEXT: xchgq %rdi, %rax # sched: [2:0.75] 16454 ; HASWELL-NEXT: xchgq %rsi, %rdi # sched: [2:0.75] 16455 ; HASWELL-NEXT: xchgq %rdi, (%rdx) # sched: [9:1.00] 16456 ; HASWELL-NEXT: #NO_APP 16457 ; HASWELL-NEXT: retq # sched: [7:1.00] 16458 ; 16459 ; BROADWELL-LABEL: test_xchg_64: 16460 ; BROADWELL: # %bb.0: 16461 ; BROADWELL-NEXT: #APP 16462 ; BROADWELL-NEXT: xchgq %rdi, %rax # sched: [2:0.75] 16463 ; BROADWELL-NEXT: xchgq %rsi, %rdi # sched: [2:0.75] 16464 ; BROADWELL-NEXT: xchgq %rdi, (%rdx) # sched: [8:1.00] 16465 ; BROADWELL-NEXT: #NO_APP 16466 ; BROADWELL-NEXT: retq # sched: [7:1.00] 16467 ; 16468 ; SKYLAKE-LABEL: test_xchg_64: 16469 ; SKYLAKE: # %bb.0: 16470 ; SKYLAKE-NEXT: #APP 16471 ; SKYLAKE-NEXT: xchgq %rdi, %rax # sched: [2:0.75] 16472 ; SKYLAKE-NEXT: xchgq %rsi, %rdi # sched: [2:0.75] 16473 ; SKYLAKE-NEXT: xchgq %rdi, (%rdx) # sched: [10:1.25] 16474 ; SKYLAKE-NEXT: #NO_APP 16475 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 16476 ; 16477 ; SKX-LABEL: test_xchg_64: 16478 ; SKX: # %bb.0: 16479 ; SKX-NEXT: #APP 16480 ; SKX-NEXT: xchgq %rdi, %rax # sched: [2:0.75] 16481 ; SKX-NEXT: xchgq %rsi, %rdi # sched: [2:0.75] 16482 ; SKX-NEXT: xchgq %rdi, (%rdx) # sched: [10:1.25] 16483 ; SKX-NEXT: #NO_APP 16484 ; SKX-NEXT: retq # sched: [7:1.00] 16485 ; 16486 ; BTVER2-LABEL: test_xchg_64: 16487 ; BTVER2: # %bb.0: 16488 ; BTVER2-NEXT: #APP 16489 ; BTVER2-NEXT: xchgq %rdi, %rax # sched: [1:0.50] 16490 ; BTVER2-NEXT: xchgq %rsi, %rdi # sched: [1:0.50] 16491 ; BTVER2-NEXT: xchgq %rdi, (%rdx) # sched: [4:1.00] 16492 ; BTVER2-NEXT: #NO_APP 16493 ; BTVER2-NEXT: retq # sched: [4:1.00] 16494 ; 16495 ; ZNVER1-LABEL: test_xchg_64: 16496 ; ZNVER1: # %bb.0: 16497 ; ZNVER1-NEXT: #APP 16498 ; ZNVER1-NEXT: xchgq %rdi, %rax # sched: [1:0.50] 16499 ; ZNVER1-NEXT: xchgq %rsi, %rdi # sched: [1:0.50] 16500 ; ZNVER1-NEXT: xchgq %rdi, (%rdx) # sched: [5:0.50] 16501 ; ZNVER1-NEXT: #NO_APP 16502 ; ZNVER1-NEXT: retq # sched: [1:0.50] 16503 tail call void asm "xchg %RAX, $0 \0A\09 xchg $1, $0 \0A\09 xchg $2, $0", "r,r,*m"(i64 %a0, i64 %a1, i64 *%a2) nounwind 16504 ret void 16505 } 16506 16507 define void @test_xlat() optsize { 16508 ; GENERIC-LABEL: test_xlat: 16509 ; GENERIC: # %bb.0: 16510 ; GENERIC-NEXT: #APP 16511 ; GENERIC-NEXT: xlatb # sched: [5:0.50] 16512 ; GENERIC-NEXT: #NO_APP 16513 ; GENERIC-NEXT: retq # sched: [1:1.00] 16514 ; 16515 ; ATOM-LABEL: test_xlat: 16516 ; ATOM: # %bb.0: 16517 ; ATOM-NEXT: #APP 16518 ; ATOM-NEXT: xlatb # sched: [6:3.00] 16519 ; ATOM-NEXT: #NO_APP 16520 ; ATOM-NEXT: retq # sched: [79:39.50] 16521 ; 16522 ; SLM-LABEL: test_xlat: 16523 ; SLM: # %bb.0: 16524 ; SLM-NEXT: #APP 16525 ; SLM-NEXT: xlatb # sched: [3:1.00] 16526 ; SLM-NEXT: #NO_APP 16527 ; SLM-NEXT: retq # sched: [4:1.00] 16528 ; 16529 ; SANDY-LABEL: test_xlat: 16530 ; SANDY: # %bb.0: 16531 ; SANDY-NEXT: #APP 16532 ; SANDY-NEXT: xlatb # sched: [5:0.50] 16533 ; SANDY-NEXT: #NO_APP 16534 ; SANDY-NEXT: retq # sched: [1:1.00] 16535 ; 16536 ; HASWELL-LABEL: test_xlat: 16537 ; HASWELL: # %bb.0: 16538 ; HASWELL-NEXT: #APP 16539 ; HASWELL-NEXT: xlatb # sched: [7:0.75] 16540 ; HASWELL-NEXT: #NO_APP 16541 ; HASWELL-NEXT: retq # sched: [7:1.00] 16542 ; 16543 ; BROADWELL-LABEL: test_xlat: 16544 ; BROADWELL: # %bb.0: 16545 ; BROADWELL-NEXT: #APP 16546 ; BROADWELL-NEXT: xlatb # sched: [5:0.50] 16547 ; BROADWELL-NEXT: #NO_APP 16548 ; BROADWELL-NEXT: retq # sched: [7:1.00] 16549 ; 16550 ; SKYLAKE-LABEL: test_xlat: 16551 ; SKYLAKE: # %bb.0: 16552 ; SKYLAKE-NEXT: #APP 16553 ; SKYLAKE-NEXT: xlatb # sched: [5:0.50] 16554 ; SKYLAKE-NEXT: #NO_APP 16555 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 16556 ; 16557 ; SKX-LABEL: test_xlat: 16558 ; SKX: # %bb.0: 16559 ; SKX-NEXT: #APP 16560 ; SKX-NEXT: xlatb # sched: [5:0.50] 16561 ; SKX-NEXT: #NO_APP 16562 ; SKX-NEXT: retq # sched: [7:1.00] 16563 ; 16564 ; BTVER2-LABEL: test_xlat: 16565 ; BTVER2: # %bb.0: 16566 ; BTVER2-NEXT: #APP 16567 ; BTVER2-NEXT: xlatb # sched: [5:1.00] 16568 ; BTVER2-NEXT: #NO_APP 16569 ; BTVER2-NEXT: retq # sched: [4:1.00] 16570 ; 16571 ; ZNVER1-LABEL: test_xlat: 16572 ; ZNVER1: # %bb.0: 16573 ; ZNVER1-NEXT: #APP 16574 ; ZNVER1-NEXT: xlatb # sched: [100:0.25] 16575 ; ZNVER1-NEXT: #NO_APP 16576 ; ZNVER1-NEXT: retq # sched: [1:0.50] 16577 tail call void asm "xlat", ""() nounwind 16578 ret void 16579 } 16580 16581 define void @test_xor_8(i8 %a0, i8* %a1, i8 %a2) optsize { 16582 ; GENERIC-LABEL: test_xor_8: 16583 ; GENERIC: # %bb.0: 16584 ; GENERIC-NEXT: #APP 16585 ; GENERIC-NEXT: xorb $7, %al # sched: [1:0.33] 16586 ; GENERIC-NEXT: xorb $7, %dil # sched: [1:0.33] 16587 ; GENERIC-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16588 ; GENERIC-NEXT: xorb %dl, %dil # sched: [1:0.33] 16589 ; GENERIC-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16590 ; GENERIC-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16591 ; GENERIC-NEXT: #NO_APP 16592 ; GENERIC-NEXT: retq # sched: [1:1.00] 16593 ; 16594 ; ATOM-LABEL: test_xor_8: 16595 ; ATOM: # %bb.0: 16596 ; ATOM-NEXT: #APP 16597 ; ATOM-NEXT: xorb $7, %al # sched: [1:0.50] 16598 ; ATOM-NEXT: xorb $7, %dil # sched: [1:0.50] 16599 ; ATOM-NEXT: xorb $7, (%rsi) # sched: [1:1.00] 16600 ; ATOM-NEXT: xorb %dl, %dil # sched: [1:0.50] 16601 ; ATOM-NEXT: xorb %dil, (%rsi) # sched: [1:1.00] 16602 ; ATOM-NEXT: xorb (%rsi), %dil # sched: [1:1.00] 16603 ; ATOM-NEXT: #NO_APP 16604 ; ATOM-NEXT: retq # sched: [79:39.50] 16605 ; 16606 ; SLM-LABEL: test_xor_8: 16607 ; SLM: # %bb.0: 16608 ; SLM-NEXT: #APP 16609 ; SLM-NEXT: xorb $7, %al # sched: [1:0.50] 16610 ; SLM-NEXT: xorb $7, %dil # sched: [1:0.50] 16611 ; SLM-NEXT: xorb $7, (%rsi) # sched: [5:2.00] 16612 ; SLM-NEXT: xorb %dl, %dil # sched: [1:0.50] 16613 ; SLM-NEXT: xorb %dil, (%rsi) # sched: [5:2.00] 16614 ; SLM-NEXT: xorb (%rsi), %dil # sched: [4:1.00] 16615 ; SLM-NEXT: #NO_APP 16616 ; SLM-NEXT: retq # sched: [4:1.00] 16617 ; 16618 ; SANDY-LABEL: test_xor_8: 16619 ; SANDY: # %bb.0: 16620 ; SANDY-NEXT: #APP 16621 ; SANDY-NEXT: xorb $7, %al # sched: [1:0.33] 16622 ; SANDY-NEXT: xorb $7, %dil # sched: [1:0.33] 16623 ; SANDY-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16624 ; SANDY-NEXT: xorb %dl, %dil # sched: [1:0.33] 16625 ; SANDY-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16626 ; SANDY-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16627 ; SANDY-NEXT: #NO_APP 16628 ; SANDY-NEXT: retq # sched: [1:1.00] 16629 ; 16630 ; HASWELL-LABEL: test_xor_8: 16631 ; HASWELL: # %bb.0: 16632 ; HASWELL-NEXT: #APP 16633 ; HASWELL-NEXT: xorb $7, %al # sched: [1:0.25] 16634 ; HASWELL-NEXT: xorb $7, %dil # sched: [1:0.25] 16635 ; HASWELL-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16636 ; HASWELL-NEXT: xorb %dl, %dil # sched: [1:0.25] 16637 ; HASWELL-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16638 ; HASWELL-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16639 ; HASWELL-NEXT: #NO_APP 16640 ; HASWELL-NEXT: retq # sched: [7:1.00] 16641 ; 16642 ; BROADWELL-LABEL: test_xor_8: 16643 ; BROADWELL: # %bb.0: 16644 ; BROADWELL-NEXT: #APP 16645 ; BROADWELL-NEXT: xorb $7, %al # sched: [1:0.25] 16646 ; BROADWELL-NEXT: xorb $7, %dil # sched: [1:0.25] 16647 ; BROADWELL-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16648 ; BROADWELL-NEXT: xorb %dl, %dil # sched: [1:0.25] 16649 ; BROADWELL-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16650 ; BROADWELL-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16651 ; BROADWELL-NEXT: #NO_APP 16652 ; BROADWELL-NEXT: retq # sched: [7:1.00] 16653 ; 16654 ; SKYLAKE-LABEL: test_xor_8: 16655 ; SKYLAKE: # %bb.0: 16656 ; SKYLAKE-NEXT: #APP 16657 ; SKYLAKE-NEXT: xorb $7, %al # sched: [1:0.25] 16658 ; SKYLAKE-NEXT: xorb $7, %dil # sched: [1:0.25] 16659 ; SKYLAKE-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16660 ; SKYLAKE-NEXT: xorb %dl, %dil # sched: [1:0.25] 16661 ; SKYLAKE-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16662 ; SKYLAKE-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16663 ; SKYLAKE-NEXT: #NO_APP 16664 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 16665 ; 16666 ; SKX-LABEL: test_xor_8: 16667 ; SKX: # %bb.0: 16668 ; SKX-NEXT: #APP 16669 ; SKX-NEXT: xorb $7, %al # sched: [1:0.25] 16670 ; SKX-NEXT: xorb $7, %dil # sched: [1:0.25] 16671 ; SKX-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16672 ; SKX-NEXT: xorb %dl, %dil # sched: [1:0.25] 16673 ; SKX-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16674 ; SKX-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16675 ; SKX-NEXT: #NO_APP 16676 ; SKX-NEXT: retq # sched: [7:1.00] 16677 ; 16678 ; BTVER2-LABEL: test_xor_8: 16679 ; BTVER2: # %bb.0: 16680 ; BTVER2-NEXT: #APP 16681 ; BTVER2-NEXT: xorb $7, %al # sched: [1:0.50] 16682 ; BTVER2-NEXT: xorb $7, %dil # sched: [1:0.50] 16683 ; BTVER2-NEXT: xorb $7, (%rsi) # sched: [5:1.00] 16684 ; BTVER2-NEXT: xorb %dl, %dil # sched: [1:0.50] 16685 ; BTVER2-NEXT: xorb %dil, (%rsi) # sched: [5:1.00] 16686 ; BTVER2-NEXT: xorb (%rsi), %dil # sched: [4:1.00] 16687 ; BTVER2-NEXT: #NO_APP 16688 ; BTVER2-NEXT: retq # sched: [4:1.00] 16689 ; 16690 ; ZNVER1-LABEL: test_xor_8: 16691 ; ZNVER1: # %bb.0: 16692 ; ZNVER1-NEXT: #APP 16693 ; ZNVER1-NEXT: xorb $7, %al # sched: [1:0.25] 16694 ; ZNVER1-NEXT: xorb $7, %dil # sched: [1:0.25] 16695 ; ZNVER1-NEXT: xorb $7, (%rsi) # sched: [5:0.50] 16696 ; ZNVER1-NEXT: xorb %dl, %dil # sched: [1:0.25] 16697 ; ZNVER1-NEXT: xorb %dil, (%rsi) # sched: [5:0.50] 16698 ; ZNVER1-NEXT: xorb (%rsi), %dil # sched: [5:0.50] 16699 ; ZNVER1-NEXT: #NO_APP 16700 ; ZNVER1-NEXT: retq # sched: [1:0.50] 16701 tail call void asm "xorb $3, %AL \0A\09 xorb $3, $0 \0A\09 xorb $3, $2 \0A\09 xorb $1, $0 \0A\09 xorb $0, $2 \0A\09 xorb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 16702 ret void 16703 } 16704 define void @test_xor_16(i16 %a0, i16* %a1, i16 %a2) optsize { 16705 ; GENERIC-LABEL: test_xor_16: 16706 ; GENERIC: # %bb.0: 16707 ; GENERIC-NEXT: #APP 16708 ; GENERIC-NEXT: xorw $511, %ax # imm = 0x1FF 16709 ; GENERIC-NEXT: # sched: [1:0.33] 16710 ; GENERIC-NEXT: xorw $511, %di # imm = 0x1FF 16711 ; GENERIC-NEXT: # sched: [1:0.33] 16712 ; GENERIC-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16713 ; GENERIC-NEXT: # sched: [7:1.00] 16714 ; GENERIC-NEXT: xorw $7, %di # sched: [1:0.33] 16715 ; GENERIC-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16716 ; GENERIC-NEXT: xorw %dx, %di # sched: [1:0.33] 16717 ; GENERIC-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16718 ; GENERIC-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16719 ; GENERIC-NEXT: #NO_APP 16720 ; GENERIC-NEXT: retq # sched: [1:1.00] 16721 ; 16722 ; ATOM-LABEL: test_xor_16: 16723 ; ATOM: # %bb.0: 16724 ; ATOM-NEXT: #APP 16725 ; ATOM-NEXT: xorw $511, %ax # imm = 0x1FF 16726 ; ATOM-NEXT: # sched: [1:0.50] 16727 ; ATOM-NEXT: xorw $511, %di # imm = 0x1FF 16728 ; ATOM-NEXT: # sched: [1:0.50] 16729 ; ATOM-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16730 ; ATOM-NEXT: # sched: [1:1.00] 16731 ; ATOM-NEXT: xorw $7, %di # sched: [1:0.50] 16732 ; ATOM-NEXT: xorw $7, (%rsi) # sched: [1:1.00] 16733 ; ATOM-NEXT: xorw %dx, %di # sched: [1:0.50] 16734 ; ATOM-NEXT: xorw %di, (%rsi) # sched: [1:1.00] 16735 ; ATOM-NEXT: xorw (%rsi), %di # sched: [1:1.00] 16736 ; ATOM-NEXT: #NO_APP 16737 ; ATOM-NEXT: retq # sched: [79:39.50] 16738 ; 16739 ; SLM-LABEL: test_xor_16: 16740 ; SLM: # %bb.0: 16741 ; SLM-NEXT: #APP 16742 ; SLM-NEXT: xorw $511, %ax # imm = 0x1FF 16743 ; SLM-NEXT: # sched: [1:0.50] 16744 ; SLM-NEXT: xorw $511, %di # imm = 0x1FF 16745 ; SLM-NEXT: # sched: [1:0.50] 16746 ; SLM-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16747 ; SLM-NEXT: # sched: [5:2.00] 16748 ; SLM-NEXT: xorw $7, %di # sched: [1:0.50] 16749 ; SLM-NEXT: xorw $7, (%rsi) # sched: [5:2.00] 16750 ; SLM-NEXT: xorw %dx, %di # sched: [1:0.50] 16751 ; SLM-NEXT: xorw %di, (%rsi) # sched: [5:2.00] 16752 ; SLM-NEXT: xorw (%rsi), %di # sched: [4:1.00] 16753 ; SLM-NEXT: #NO_APP 16754 ; SLM-NEXT: retq # sched: [4:1.00] 16755 ; 16756 ; SANDY-LABEL: test_xor_16: 16757 ; SANDY: # %bb.0: 16758 ; SANDY-NEXT: #APP 16759 ; SANDY-NEXT: xorw $511, %ax # imm = 0x1FF 16760 ; SANDY-NEXT: # sched: [1:0.33] 16761 ; SANDY-NEXT: xorw $511, %di # imm = 0x1FF 16762 ; SANDY-NEXT: # sched: [1:0.33] 16763 ; SANDY-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16764 ; SANDY-NEXT: # sched: [7:1.00] 16765 ; SANDY-NEXT: xorw $7, %di # sched: [1:0.33] 16766 ; SANDY-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16767 ; SANDY-NEXT: xorw %dx, %di # sched: [1:0.33] 16768 ; SANDY-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16769 ; SANDY-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16770 ; SANDY-NEXT: #NO_APP 16771 ; SANDY-NEXT: retq # sched: [1:1.00] 16772 ; 16773 ; HASWELL-LABEL: test_xor_16: 16774 ; HASWELL: # %bb.0: 16775 ; HASWELL-NEXT: #APP 16776 ; HASWELL-NEXT: xorw $511, %ax # imm = 0x1FF 16777 ; HASWELL-NEXT: # sched: [1:0.25] 16778 ; HASWELL-NEXT: xorw $511, %di # imm = 0x1FF 16779 ; HASWELL-NEXT: # sched: [1:0.25] 16780 ; HASWELL-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16781 ; HASWELL-NEXT: # sched: [7:1.00] 16782 ; HASWELL-NEXT: xorw $7, %di # sched: [1:0.25] 16783 ; HASWELL-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16784 ; HASWELL-NEXT: xorw %dx, %di # sched: [1:0.25] 16785 ; HASWELL-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16786 ; HASWELL-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16787 ; HASWELL-NEXT: #NO_APP 16788 ; HASWELL-NEXT: retq # sched: [7:1.00] 16789 ; 16790 ; BROADWELL-LABEL: test_xor_16: 16791 ; BROADWELL: # %bb.0: 16792 ; BROADWELL-NEXT: #APP 16793 ; BROADWELL-NEXT: xorw $511, %ax # imm = 0x1FF 16794 ; BROADWELL-NEXT: # sched: [1:0.25] 16795 ; BROADWELL-NEXT: xorw $511, %di # imm = 0x1FF 16796 ; BROADWELL-NEXT: # sched: [1:0.25] 16797 ; BROADWELL-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16798 ; BROADWELL-NEXT: # sched: [7:1.00] 16799 ; BROADWELL-NEXT: xorw $7, %di # sched: [1:0.25] 16800 ; BROADWELL-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16801 ; BROADWELL-NEXT: xorw %dx, %di # sched: [1:0.25] 16802 ; BROADWELL-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16803 ; BROADWELL-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16804 ; BROADWELL-NEXT: #NO_APP 16805 ; BROADWELL-NEXT: retq # sched: [7:1.00] 16806 ; 16807 ; SKYLAKE-LABEL: test_xor_16: 16808 ; SKYLAKE: # %bb.0: 16809 ; SKYLAKE-NEXT: #APP 16810 ; SKYLAKE-NEXT: xorw $511, %ax # imm = 0x1FF 16811 ; SKYLAKE-NEXT: # sched: [1:0.25] 16812 ; SKYLAKE-NEXT: xorw $511, %di # imm = 0x1FF 16813 ; SKYLAKE-NEXT: # sched: [1:0.25] 16814 ; SKYLAKE-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16815 ; SKYLAKE-NEXT: # sched: [7:1.00] 16816 ; SKYLAKE-NEXT: xorw $7, %di # sched: [1:0.25] 16817 ; SKYLAKE-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16818 ; SKYLAKE-NEXT: xorw %dx, %di # sched: [1:0.25] 16819 ; SKYLAKE-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16820 ; SKYLAKE-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16821 ; SKYLAKE-NEXT: #NO_APP 16822 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 16823 ; 16824 ; SKX-LABEL: test_xor_16: 16825 ; SKX: # %bb.0: 16826 ; SKX-NEXT: #APP 16827 ; SKX-NEXT: xorw $511, %ax # imm = 0x1FF 16828 ; SKX-NEXT: # sched: [1:0.25] 16829 ; SKX-NEXT: xorw $511, %di # imm = 0x1FF 16830 ; SKX-NEXT: # sched: [1:0.25] 16831 ; SKX-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16832 ; SKX-NEXT: # sched: [7:1.00] 16833 ; SKX-NEXT: xorw $7, %di # sched: [1:0.25] 16834 ; SKX-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16835 ; SKX-NEXT: xorw %dx, %di # sched: [1:0.25] 16836 ; SKX-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16837 ; SKX-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16838 ; SKX-NEXT: #NO_APP 16839 ; SKX-NEXT: retq # sched: [7:1.00] 16840 ; 16841 ; BTVER2-LABEL: test_xor_16: 16842 ; BTVER2: # %bb.0: 16843 ; BTVER2-NEXT: #APP 16844 ; BTVER2-NEXT: xorw $511, %ax # imm = 0x1FF 16845 ; BTVER2-NEXT: # sched: [1:0.50] 16846 ; BTVER2-NEXT: xorw $511, %di # imm = 0x1FF 16847 ; BTVER2-NEXT: # sched: [1:0.50] 16848 ; BTVER2-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16849 ; BTVER2-NEXT: # sched: [5:1.00] 16850 ; BTVER2-NEXT: xorw $7, %di # sched: [1:0.50] 16851 ; BTVER2-NEXT: xorw $7, (%rsi) # sched: [5:1.00] 16852 ; BTVER2-NEXT: xorw %dx, %di # sched: [1:0.50] 16853 ; BTVER2-NEXT: xorw %di, (%rsi) # sched: [5:1.00] 16854 ; BTVER2-NEXT: xorw (%rsi), %di # sched: [4:1.00] 16855 ; BTVER2-NEXT: #NO_APP 16856 ; BTVER2-NEXT: retq # sched: [4:1.00] 16857 ; 16858 ; ZNVER1-LABEL: test_xor_16: 16859 ; ZNVER1: # %bb.0: 16860 ; ZNVER1-NEXT: #APP 16861 ; ZNVER1-NEXT: xorw $511, %ax # imm = 0x1FF 16862 ; ZNVER1-NEXT: # sched: [1:0.25] 16863 ; ZNVER1-NEXT: xorw $511, %di # imm = 0x1FF 16864 ; ZNVER1-NEXT: # sched: [1:0.25] 16865 ; ZNVER1-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16866 ; ZNVER1-NEXT: # sched: [5:0.50] 16867 ; ZNVER1-NEXT: xorw $7, %di # sched: [1:0.25] 16868 ; ZNVER1-NEXT: xorw $7, (%rsi) # sched: [5:0.50] 16869 ; ZNVER1-NEXT: xorw %dx, %di # sched: [1:0.25] 16870 ; ZNVER1-NEXT: xorw %di, (%rsi) # sched: [5:0.50] 16871 ; ZNVER1-NEXT: xorw (%rsi), %di # sched: [5:0.50] 16872 ; ZNVER1-NEXT: #NO_APP 16873 ; ZNVER1-NEXT: retq # sched: [1:0.50] 16874 tail call void asm "xorw $3, %AX \0A\09 xorw $3, $0 \0A\09 xorw $3, $2 \0A\09 xorw $4, $0 \0A\09 xorw $4, $2 \0A\09 xorw $1, $0 \0A\09 xorw $0, $2 \0A\09 xorw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 16875 ret void 16876 } 16877 define void @test_xor_32(i32 %a0, i32* %a1, i32 %a2) optsize { 16878 ; GENERIC-LABEL: test_xor_32: 16879 ; GENERIC: # %bb.0: 16880 ; GENERIC-NEXT: #APP 16881 ; GENERIC-NEXT: xorl $665536, %eax # imm = 0xA27C0 16882 ; GENERIC-NEXT: # sched: [1:0.33] 16883 ; GENERIC-NEXT: xorl $665536, %edi # imm = 0xA27C0 16884 ; GENERIC-NEXT: # sched: [1:0.33] 16885 ; GENERIC-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16886 ; GENERIC-NEXT: # sched: [7:1.00] 16887 ; GENERIC-NEXT: xorl $7, %edi # sched: [1:0.33] 16888 ; GENERIC-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 16889 ; GENERIC-NEXT: xorl %edx, %edi # sched: [1:0.33] 16890 ; GENERIC-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 16891 ; GENERIC-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 16892 ; GENERIC-NEXT: #NO_APP 16893 ; GENERIC-NEXT: retq # sched: [1:1.00] 16894 ; 16895 ; ATOM-LABEL: test_xor_32: 16896 ; ATOM: # %bb.0: 16897 ; ATOM-NEXT: #APP 16898 ; ATOM-NEXT: xorl $665536, %eax # imm = 0xA27C0 16899 ; ATOM-NEXT: # sched: [1:0.50] 16900 ; ATOM-NEXT: xorl $665536, %edi # imm = 0xA27C0 16901 ; ATOM-NEXT: # sched: [1:0.50] 16902 ; ATOM-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16903 ; ATOM-NEXT: # sched: [1:1.00] 16904 ; ATOM-NEXT: xorl $7, %edi # sched: [1:0.50] 16905 ; ATOM-NEXT: xorl $7, (%rsi) # sched: [1:1.00] 16906 ; ATOM-NEXT: xorl %edx, %edi # sched: [1:0.50] 16907 ; ATOM-NEXT: xorl %edi, (%rsi) # sched: [1:1.00] 16908 ; ATOM-NEXT: xorl (%rsi), %edi # sched: [1:1.00] 16909 ; ATOM-NEXT: #NO_APP 16910 ; ATOM-NEXT: retq # sched: [79:39.50] 16911 ; 16912 ; SLM-LABEL: test_xor_32: 16913 ; SLM: # %bb.0: 16914 ; SLM-NEXT: #APP 16915 ; SLM-NEXT: xorl $665536, %eax # imm = 0xA27C0 16916 ; SLM-NEXT: # sched: [1:0.50] 16917 ; SLM-NEXT: xorl $665536, %edi # imm = 0xA27C0 16918 ; SLM-NEXT: # sched: [1:0.50] 16919 ; SLM-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16920 ; SLM-NEXT: # sched: [5:2.00] 16921 ; SLM-NEXT: xorl $7, %edi # sched: [1:0.50] 16922 ; SLM-NEXT: xorl $7, (%rsi) # sched: [5:2.00] 16923 ; SLM-NEXT: xorl %edx, %edi # sched: [1:0.50] 16924 ; SLM-NEXT: xorl %edi, (%rsi) # sched: [5:2.00] 16925 ; SLM-NEXT: xorl (%rsi), %edi # sched: [4:1.00] 16926 ; SLM-NEXT: #NO_APP 16927 ; SLM-NEXT: retq # sched: [4:1.00] 16928 ; 16929 ; SANDY-LABEL: test_xor_32: 16930 ; SANDY: # %bb.0: 16931 ; SANDY-NEXT: #APP 16932 ; SANDY-NEXT: xorl $665536, %eax # imm = 0xA27C0 16933 ; SANDY-NEXT: # sched: [1:0.33] 16934 ; SANDY-NEXT: xorl $665536, %edi # imm = 0xA27C0 16935 ; SANDY-NEXT: # sched: [1:0.33] 16936 ; SANDY-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16937 ; SANDY-NEXT: # sched: [7:1.00] 16938 ; SANDY-NEXT: xorl $7, %edi # sched: [1:0.33] 16939 ; SANDY-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 16940 ; SANDY-NEXT: xorl %edx, %edi # sched: [1:0.33] 16941 ; SANDY-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 16942 ; SANDY-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 16943 ; SANDY-NEXT: #NO_APP 16944 ; SANDY-NEXT: retq # sched: [1:1.00] 16945 ; 16946 ; HASWELL-LABEL: test_xor_32: 16947 ; HASWELL: # %bb.0: 16948 ; HASWELL-NEXT: #APP 16949 ; HASWELL-NEXT: xorl $665536, %eax # imm = 0xA27C0 16950 ; HASWELL-NEXT: # sched: [1:0.25] 16951 ; HASWELL-NEXT: xorl $665536, %edi # imm = 0xA27C0 16952 ; HASWELL-NEXT: # sched: [1:0.25] 16953 ; HASWELL-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16954 ; HASWELL-NEXT: # sched: [7:1.00] 16955 ; HASWELL-NEXT: xorl $7, %edi # sched: [1:0.25] 16956 ; HASWELL-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 16957 ; HASWELL-NEXT: xorl %edx, %edi # sched: [1:0.25] 16958 ; HASWELL-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 16959 ; HASWELL-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 16960 ; HASWELL-NEXT: #NO_APP 16961 ; HASWELL-NEXT: retq # sched: [7:1.00] 16962 ; 16963 ; BROADWELL-LABEL: test_xor_32: 16964 ; BROADWELL: # %bb.0: 16965 ; BROADWELL-NEXT: #APP 16966 ; BROADWELL-NEXT: xorl $665536, %eax # imm = 0xA27C0 16967 ; BROADWELL-NEXT: # sched: [1:0.25] 16968 ; BROADWELL-NEXT: xorl $665536, %edi # imm = 0xA27C0 16969 ; BROADWELL-NEXT: # sched: [1:0.25] 16970 ; BROADWELL-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16971 ; BROADWELL-NEXT: # sched: [7:1.00] 16972 ; BROADWELL-NEXT: xorl $7, %edi # sched: [1:0.25] 16973 ; BROADWELL-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 16974 ; BROADWELL-NEXT: xorl %edx, %edi # sched: [1:0.25] 16975 ; BROADWELL-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 16976 ; BROADWELL-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 16977 ; BROADWELL-NEXT: #NO_APP 16978 ; BROADWELL-NEXT: retq # sched: [7:1.00] 16979 ; 16980 ; SKYLAKE-LABEL: test_xor_32: 16981 ; SKYLAKE: # %bb.0: 16982 ; SKYLAKE-NEXT: #APP 16983 ; SKYLAKE-NEXT: xorl $665536, %eax # imm = 0xA27C0 16984 ; SKYLAKE-NEXT: # sched: [1:0.25] 16985 ; SKYLAKE-NEXT: xorl $665536, %edi # imm = 0xA27C0 16986 ; SKYLAKE-NEXT: # sched: [1:0.25] 16987 ; SKYLAKE-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16988 ; SKYLAKE-NEXT: # sched: [7:1.00] 16989 ; SKYLAKE-NEXT: xorl $7, %edi # sched: [1:0.25] 16990 ; SKYLAKE-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 16991 ; SKYLAKE-NEXT: xorl %edx, %edi # sched: [1:0.25] 16992 ; SKYLAKE-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 16993 ; SKYLAKE-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 16994 ; SKYLAKE-NEXT: #NO_APP 16995 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 16996 ; 16997 ; SKX-LABEL: test_xor_32: 16998 ; SKX: # %bb.0: 16999 ; SKX-NEXT: #APP 17000 ; SKX-NEXT: xorl $665536, %eax # imm = 0xA27C0 17001 ; SKX-NEXT: # sched: [1:0.25] 17002 ; SKX-NEXT: xorl $665536, %edi # imm = 0xA27C0 17003 ; SKX-NEXT: # sched: [1:0.25] 17004 ; SKX-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 17005 ; SKX-NEXT: # sched: [7:1.00] 17006 ; SKX-NEXT: xorl $7, %edi # sched: [1:0.25] 17007 ; SKX-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 17008 ; SKX-NEXT: xorl %edx, %edi # sched: [1:0.25] 17009 ; SKX-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 17010 ; SKX-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 17011 ; SKX-NEXT: #NO_APP 17012 ; SKX-NEXT: retq # sched: [7:1.00] 17013 ; 17014 ; BTVER2-LABEL: test_xor_32: 17015 ; BTVER2: # %bb.0: 17016 ; BTVER2-NEXT: #APP 17017 ; BTVER2-NEXT: xorl $665536, %eax # imm = 0xA27C0 17018 ; BTVER2-NEXT: # sched: [1:0.50] 17019 ; BTVER2-NEXT: xorl $665536, %edi # imm = 0xA27C0 17020 ; BTVER2-NEXT: # sched: [1:0.50] 17021 ; BTVER2-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 17022 ; BTVER2-NEXT: # sched: [5:1.00] 17023 ; BTVER2-NEXT: xorl $7, %edi # sched: [1:0.50] 17024 ; BTVER2-NEXT: xorl $7, (%rsi) # sched: [5:1.00] 17025 ; BTVER2-NEXT: xorl %edx, %edi # sched: [1:0.50] 17026 ; BTVER2-NEXT: xorl %edi, (%rsi) # sched: [5:1.00] 17027 ; BTVER2-NEXT: xorl (%rsi), %edi # sched: [4:1.00] 17028 ; BTVER2-NEXT: #NO_APP 17029 ; BTVER2-NEXT: retq # sched: [4:1.00] 17030 ; 17031 ; ZNVER1-LABEL: test_xor_32: 17032 ; ZNVER1: # %bb.0: 17033 ; ZNVER1-NEXT: #APP 17034 ; ZNVER1-NEXT: xorl $665536, %eax # imm = 0xA27C0 17035 ; ZNVER1-NEXT: # sched: [1:0.25] 17036 ; ZNVER1-NEXT: xorl $665536, %edi # imm = 0xA27C0 17037 ; ZNVER1-NEXT: # sched: [1:0.25] 17038 ; ZNVER1-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 17039 ; ZNVER1-NEXT: # sched: [5:0.50] 17040 ; ZNVER1-NEXT: xorl $7, %edi # sched: [1:0.25] 17041 ; ZNVER1-NEXT: xorl $7, (%rsi) # sched: [5:0.50] 17042 ; ZNVER1-NEXT: xorl %edx, %edi # sched: [1:0.25] 17043 ; ZNVER1-NEXT: xorl %edi, (%rsi) # sched: [5:0.50] 17044 ; ZNVER1-NEXT: xorl (%rsi), %edi # sched: [5:0.50] 17045 ; ZNVER1-NEXT: #NO_APP 17046 ; ZNVER1-NEXT: retq # sched: [1:0.50] 17047 tail call void asm "xorl $3, %EAX \0A\09 xorl $3, $0 \0A\09 xorl $3, $2 \0A\09 xorl $4, $0 \0A\09 xorl $4, $2 \0A\09 xorl $1, $0 \0A\09 xorl $0, $2 \0A\09 xorl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 17048 ret void 17049 } 17050 define void @test_xor_64(i64 %a0, i64* %a1, i64 %a2) optsize { 17051 ; GENERIC-LABEL: test_xor_64: 17052 ; GENERIC: # %bb.0: 17053 ; GENERIC-NEXT: #APP 17054 ; GENERIC-NEXT: xorq $665536, %rax # imm = 0xA27C0 17055 ; GENERIC-NEXT: # sched: [1:0.33] 17056 ; GENERIC-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17057 ; GENERIC-NEXT: # sched: [1:0.33] 17058 ; GENERIC-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17059 ; GENERIC-NEXT: # sched: [7:1.00] 17060 ; GENERIC-NEXT: xorq $7, %rdi # sched: [1:0.33] 17061 ; GENERIC-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17062 ; GENERIC-NEXT: xorq %rdx, %rdi # sched: [1:0.33] 17063 ; GENERIC-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17064 ; GENERIC-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17065 ; GENERIC-NEXT: #NO_APP 17066 ; GENERIC-NEXT: retq # sched: [1:1.00] 17067 ; 17068 ; ATOM-LABEL: test_xor_64: 17069 ; ATOM: # %bb.0: 17070 ; ATOM-NEXT: #APP 17071 ; ATOM-NEXT: xorq $665536, %rax # imm = 0xA27C0 17072 ; ATOM-NEXT: # sched: [1:0.50] 17073 ; ATOM-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17074 ; ATOM-NEXT: # sched: [1:0.50] 17075 ; ATOM-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17076 ; ATOM-NEXT: # sched: [1:1.00] 17077 ; ATOM-NEXT: xorq $7, %rdi # sched: [1:0.50] 17078 ; ATOM-NEXT: xorq $7, (%rsi) # sched: [1:1.00] 17079 ; ATOM-NEXT: xorq %rdx, %rdi # sched: [1:0.50] 17080 ; ATOM-NEXT: xorq %rdi, (%rsi) # sched: [1:1.00] 17081 ; ATOM-NEXT: xorq (%rsi), %rdi # sched: [1:1.00] 17082 ; ATOM-NEXT: #NO_APP 17083 ; ATOM-NEXT: retq # sched: [79:39.50] 17084 ; 17085 ; SLM-LABEL: test_xor_64: 17086 ; SLM: # %bb.0: 17087 ; SLM-NEXT: #APP 17088 ; SLM-NEXT: xorq $665536, %rax # imm = 0xA27C0 17089 ; SLM-NEXT: # sched: [1:0.50] 17090 ; SLM-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17091 ; SLM-NEXT: # sched: [1:0.50] 17092 ; SLM-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17093 ; SLM-NEXT: # sched: [5:2.00] 17094 ; SLM-NEXT: xorq $7, %rdi # sched: [1:0.50] 17095 ; SLM-NEXT: xorq $7, (%rsi) # sched: [5:2.00] 17096 ; SLM-NEXT: xorq %rdx, %rdi # sched: [1:0.50] 17097 ; SLM-NEXT: xorq %rdi, (%rsi) # sched: [5:2.00] 17098 ; SLM-NEXT: xorq (%rsi), %rdi # sched: [4:1.00] 17099 ; SLM-NEXT: #NO_APP 17100 ; SLM-NEXT: retq # sched: [4:1.00] 17101 ; 17102 ; SANDY-LABEL: test_xor_64: 17103 ; SANDY: # %bb.0: 17104 ; SANDY-NEXT: #APP 17105 ; SANDY-NEXT: xorq $665536, %rax # imm = 0xA27C0 17106 ; SANDY-NEXT: # sched: [1:0.33] 17107 ; SANDY-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17108 ; SANDY-NEXT: # sched: [1:0.33] 17109 ; SANDY-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17110 ; SANDY-NEXT: # sched: [7:1.00] 17111 ; SANDY-NEXT: xorq $7, %rdi # sched: [1:0.33] 17112 ; SANDY-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17113 ; SANDY-NEXT: xorq %rdx, %rdi # sched: [1:0.33] 17114 ; SANDY-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17115 ; SANDY-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17116 ; SANDY-NEXT: #NO_APP 17117 ; SANDY-NEXT: retq # sched: [1:1.00] 17118 ; 17119 ; HASWELL-LABEL: test_xor_64: 17120 ; HASWELL: # %bb.0: 17121 ; HASWELL-NEXT: #APP 17122 ; HASWELL-NEXT: xorq $665536, %rax # imm = 0xA27C0 17123 ; HASWELL-NEXT: # sched: [1:0.25] 17124 ; HASWELL-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17125 ; HASWELL-NEXT: # sched: [1:0.25] 17126 ; HASWELL-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17127 ; HASWELL-NEXT: # sched: [7:1.00] 17128 ; HASWELL-NEXT: xorq $7, %rdi # sched: [1:0.25] 17129 ; HASWELL-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17130 ; HASWELL-NEXT: xorq %rdx, %rdi # sched: [1:0.25] 17131 ; HASWELL-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17132 ; HASWELL-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17133 ; HASWELL-NEXT: #NO_APP 17134 ; HASWELL-NEXT: retq # sched: [7:1.00] 17135 ; 17136 ; BROADWELL-LABEL: test_xor_64: 17137 ; BROADWELL: # %bb.0: 17138 ; BROADWELL-NEXT: #APP 17139 ; BROADWELL-NEXT: xorq $665536, %rax # imm = 0xA27C0 17140 ; BROADWELL-NEXT: # sched: [1:0.25] 17141 ; BROADWELL-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17142 ; BROADWELL-NEXT: # sched: [1:0.25] 17143 ; BROADWELL-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17144 ; BROADWELL-NEXT: # sched: [7:1.00] 17145 ; BROADWELL-NEXT: xorq $7, %rdi # sched: [1:0.25] 17146 ; BROADWELL-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17147 ; BROADWELL-NEXT: xorq %rdx, %rdi # sched: [1:0.25] 17148 ; BROADWELL-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17149 ; BROADWELL-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17150 ; BROADWELL-NEXT: #NO_APP 17151 ; BROADWELL-NEXT: retq # sched: [7:1.00] 17152 ; 17153 ; SKYLAKE-LABEL: test_xor_64: 17154 ; SKYLAKE: # %bb.0: 17155 ; SKYLAKE-NEXT: #APP 17156 ; SKYLAKE-NEXT: xorq $665536, %rax # imm = 0xA27C0 17157 ; SKYLAKE-NEXT: # sched: [1:0.25] 17158 ; SKYLAKE-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17159 ; SKYLAKE-NEXT: # sched: [1:0.25] 17160 ; SKYLAKE-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17161 ; SKYLAKE-NEXT: # sched: [7:1.00] 17162 ; SKYLAKE-NEXT: xorq $7, %rdi # sched: [1:0.25] 17163 ; SKYLAKE-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17164 ; SKYLAKE-NEXT: xorq %rdx, %rdi # sched: [1:0.25] 17165 ; SKYLAKE-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17166 ; SKYLAKE-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17167 ; SKYLAKE-NEXT: #NO_APP 17168 ; SKYLAKE-NEXT: retq # sched: [7:1.00] 17169 ; 17170 ; SKX-LABEL: test_xor_64: 17171 ; SKX: # %bb.0: 17172 ; SKX-NEXT: #APP 17173 ; SKX-NEXT: xorq $665536, %rax # imm = 0xA27C0 17174 ; SKX-NEXT: # sched: [1:0.25] 17175 ; SKX-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17176 ; SKX-NEXT: # sched: [1:0.25] 17177 ; SKX-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17178 ; SKX-NEXT: # sched: [7:1.00] 17179 ; SKX-NEXT: xorq $7, %rdi # sched: [1:0.25] 17180 ; SKX-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17181 ; SKX-NEXT: xorq %rdx, %rdi # sched: [1:0.25] 17182 ; SKX-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17183 ; SKX-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17184 ; SKX-NEXT: #NO_APP 17185 ; SKX-NEXT: retq # sched: [7:1.00] 17186 ; 17187 ; BTVER2-LABEL: test_xor_64: 17188 ; BTVER2: # %bb.0: 17189 ; BTVER2-NEXT: #APP 17190 ; BTVER2-NEXT: xorq $665536, %rax # imm = 0xA27C0 17191 ; BTVER2-NEXT: # sched: [1:0.50] 17192 ; BTVER2-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17193 ; BTVER2-NEXT: # sched: [1:0.50] 17194 ; BTVER2-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17195 ; BTVER2-NEXT: # sched: [5:1.00] 17196 ; BTVER2-NEXT: xorq $7, %rdi # sched: [1:0.50] 17197 ; BTVER2-NEXT: xorq $7, (%rsi) # sched: [5:1.00] 17198 ; BTVER2-NEXT: xorq %rdx, %rdi # sched: [1:0.50] 17199 ; BTVER2-NEXT: xorq %rdi, (%rsi) # sched: [5:1.00] 17200 ; BTVER2-NEXT: xorq (%rsi), %rdi # sched: [4:1.00] 17201 ; BTVER2-NEXT: #NO_APP 17202 ; BTVER2-NEXT: retq # sched: [4:1.00] 17203 ; 17204 ; ZNVER1-LABEL: test_xor_64: 17205 ; ZNVER1: # %bb.0: 17206 ; ZNVER1-NEXT: #APP 17207 ; ZNVER1-NEXT: xorq $665536, %rax # imm = 0xA27C0 17208 ; ZNVER1-NEXT: # sched: [1:0.25] 17209 ; ZNVER1-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17210 ; ZNVER1-NEXT: # sched: [1:0.25] 17211 ; ZNVER1-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17212 ; ZNVER1-NEXT: # sched: [5:0.50] 17213 ; ZNVER1-NEXT: xorq $7, %rdi # sched: [1:0.25] 17214 ; ZNVER1-NEXT: xorq $7, (%rsi) # sched: [5:0.50] 17215 ; ZNVER1-NEXT: xorq %rdx, %rdi # sched: [1:0.25] 17216 ; ZNVER1-NEXT: xorq %rdi, (%rsi) # sched: [5:0.50] 17217 ; ZNVER1-NEXT: xorq (%rsi), %rdi # sched: [5:0.50] 17218 ; ZNVER1-NEXT: #NO_APP 17219 ; ZNVER1-NEXT: retq # sched: [1:0.50] 17220 tail call void asm "xorq $3, %RAX \0A\09 xorq $3, $0 \0A\09 xorq $3, $2 \0A\09 xorq $4, $0 \0A\09 xorq $4, $2 \0A\09 xorq $1, $0 \0A\09 xorq $0, $2 \0A\09 xorq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 17221 ret void 17222 } 17223