Home | History | Annotate | Download | only in X86
      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