Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s
      2 
      3 define void @nop_test() {
      4 entry:
      5 ; CHECK-LABEL: nop_test:
      6 ; CHECK:      nop
      7 ; CHECK:      xchgw %ax, %ax
      8 ; CHECK:      nopl (%rax)
      9 ; CHECK:      nopl 8(%rax)
     10 ; CHECK:      nopl 8(%rax,%rax)
     11 ; CHECK:      nopw 8(%rax,%rax)
     12 ; CHECK:      nopl 512(%rax)
     13 ; CHECK:      nopl 512(%rax,%rax)
     14 ; CHECK:      nopw 512(%rax,%rax)
     15 ; CHECK:      nopw %cs:512(%rax,%rax)
     16 
     17 ; 11
     18 ; CHECK:      .byte 102
     19 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     20 
     21 ; 12
     22 ; CHECK:      .byte 102
     23 ; CHECK-NEXT: .byte 102
     24 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     25 
     26 ; 13
     27 ; CHECK:      .byte 102
     28 ; CHECK-NEXT: .byte 102
     29 ; CHECK-NEXT: .byte 102
     30 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     31 
     32 ; 14
     33 ; CHECK:      .byte 102
     34 ; CHECK-NEXT: .byte 102
     35 ; CHECK-NEXT: .byte 102
     36 ; CHECK-NEXT: .byte 102
     37 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     38 
     39 ; 15
     40 ; CHECK:      .byte 102
     41 ; CHECK-NEXT: .byte 102
     42 ; CHECK-NEXT: .byte 102
     43 ; CHECK-NEXT: .byte 102
     44 ; CHECK-NEXT: .byte 102
     45 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     46 
     47 ; 16
     48 ; CHECK:      .byte 102
     49 ; CHECK-NEXT: .byte 102
     50 ; CHECK-NEXT: .byte 102
     51 ; CHECK-NEXT: .byte 102
     52 ; CHECK-NEXT: .byte 102
     53 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     54 ; CHECK-NEXT: nop
     55 
     56 ; 17
     57 ; CHECK:      .byte 102
     58 ; CHECK-NEXT: .byte 102
     59 ; CHECK-NEXT: .byte 102
     60 ; CHECK-NEXT: .byte 102
     61 ; CHECK-NEXT: .byte 102
     62 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     63 ; CHECK-NEXT: xchgw %ax, %ax
     64 
     65 ; 18
     66 ; CHECK:      .byte 102
     67 ; CHECK-NEXT: .byte 102
     68 ; CHECK-NEXT: .byte 102
     69 ; CHECK-NEXT: .byte 102
     70 ; CHECK-NEXT: .byte 102
     71 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     72 ; CHECK-NEXT: nopl (%rax)
     73 
     74 ; 19
     75 ; CHECK:      .byte 102
     76 ; CHECK-NEXT: .byte 102
     77 ; CHECK-NEXT: .byte 102
     78 ; CHECK-NEXT: .byte 102
     79 ; CHECK-NEXT: .byte 102
     80 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     81 ; CHECK-NEXT: nopl 8(%rax)
     82 
     83 ; 20
     84 ; CHECK:      .byte 102
     85 ; CHECK-NEXT: .byte 102
     86 ; CHECK-NEXT: .byte 102
     87 ; CHECK-NEXT: .byte 102
     88 ; CHECK-NEXT: .byte 102
     89 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     90 ; CHECK-NEXT: nopl 8(%rax,%rax)
     91 
     92 ; 21
     93 ; CHECK:      .byte 102
     94 ; CHECK-NEXT: .byte 102
     95 ; CHECK-NEXT: .byte 102
     96 ; CHECK-NEXT: .byte 102
     97 ; CHECK-NEXT: .byte 102
     98 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
     99 ; CHECK-NEXT: nopw 8(%rax,%rax)
    100 
    101 ; 22
    102 ; CHECK:      .byte 102
    103 ; CHECK-NEXT: .byte 102
    104 ; CHECK-NEXT: .byte 102
    105 ; CHECK-NEXT: .byte 102
    106 ; CHECK-NEXT: .byte 102
    107 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    108 ; CHECK-NEXT: nopl 512(%rax)
    109 
    110 ; 23
    111 ; CHECK:      .byte 102
    112 ; CHECK-NEXT: .byte 102
    113 ; CHECK-NEXT: .byte 102
    114 ; CHECK-NEXT: .byte 102
    115 ; CHECK-NEXT: .byte 102
    116 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    117 ; CHECK-NEXT: nopl 512(%rax,%rax)
    118 
    119 ; 24
    120 ; CHECK:      .byte 102
    121 ; CHECK-NEXT: .byte 102
    122 ; CHECK-NEXT: .byte 102
    123 ; CHECK-NEXT: .byte 102
    124 ; CHECK-NEXT: .byte 102
    125 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    126 ; CHECK-NEXT: nopw 512(%rax,%rax)
    127 
    128 ; 25
    129 ; CHECK:      .byte 102
    130 ; CHECK-NEXT: .byte 102
    131 ; CHECK-NEXT: .byte 102
    132 ; CHECK-NEXT: .byte 102
    133 ; CHECK-NEXT: .byte 102
    134 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    135 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    136 
    137 ; 26
    138 ; CHECK:      .byte 102
    139 ; CHECK-NEXT: .byte 102
    140 ; CHECK-NEXT: .byte 102
    141 ; CHECK-NEXT: .byte 102
    142 ; CHECK-NEXT: .byte 102
    143 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    144 ; CHECK-NEXT: .byte 102
    145 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    146 
    147 ; 27
    148 ; CHECK:      .byte 102
    149 ; CHECK-NEXT: .byte 102
    150 ; CHECK-NEXT: .byte 102
    151 ; CHECK-NEXT: .byte 102
    152 ; CHECK-NEXT: .byte 102
    153 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    154 ; CHECK-NEXT: .byte 102
    155 ; CHECK-NEXT: .byte 102
    156 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    157 
    158 ; 28
    159 ; CHECK:      .byte 102
    160 ; CHECK-NEXT: .byte 102
    161 ; CHECK-NEXT: .byte 102
    162 ; CHECK-NEXT: .byte 102
    163 ; CHECK-NEXT: .byte 102
    164 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    165 ; CHECK-NEXT: .byte 102
    166 ; CHECK-NEXT: .byte 102
    167 ; CHECK-NEXT: .byte 102
    168 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    169 
    170 ;29
    171 ; CHECK:      .byte 102
    172 ; CHECK-NEXT: .byte 102
    173 ; CHECK-NEXT: .byte 102
    174 ; CHECK-NEXT: .byte 102
    175 ; CHECK-NEXT: .byte 102
    176 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    177 ; CHECK-NEXT: .byte 102
    178 ; CHECK-NEXT: .byte 102
    179 ; CHECK-NEXT: .byte 102
    180 ; CHECK-NEXT: .byte 102
    181 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    182 
    183 ; 30
    184 ; CHECK:      .byte 102
    185 ; CHECK-NEXT: .byte 102
    186 ; CHECK-NEXT: .byte 102
    187 ; CHECK-NEXT: .byte 102
    188 ; CHECK-NEXT: .byte 102
    189 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    190 ; CHECK-NEXT: .byte 102
    191 ; CHECK-NEXT: .byte 102
    192 ; CHECK-NEXT: .byte 102
    193 ; CHECK-NEXT: .byte 102
    194 ; CHECK-NEXT: .byte 102
    195 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
    196   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  0, i32  0)
    197   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  1, i32  1)
    198   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  2, i32  2)
    199   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  3, i32  3)
    200   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  4, i32  4)
    201   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  5, i32  5)
    202   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  6, i32  6)
    203   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  7, i32  7)
    204   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  8, i32  8)
    205   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  9, i32  9)
    206   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 10, i32 10)
    207   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 11, i32 11)
    208   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 12)
    209   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 13, i32 13)
    210   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 14, i32 14)
    211   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 15)
    212   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 16)
    213   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 17, i32 17)
    214   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 18, i32 18)
    215   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 19, i32 19)
    216   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 20, i32 20)
    217   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 21, i32 21)
    218   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 22, i32 22)
    219   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 23, i32 23)
    220   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 24, i32 24)
    221   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 25, i32 25)
    222   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 26, i32 26)
    223   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 27, i32 27)
    224   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 28, i32 28)
    225   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 29, i32 29)
    226   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 30, i32 30)
    227 ; Add an extra stackmap with a zero-length shadow to thwart the shadow
    228 ; optimization. This will force all 15 bytes of the previous shadow to be
    229 ; padded with nops.
    230   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0)
    231   ret void
    232 }
    233 
    234 declare void @llvm.experimental.stackmap(i64, i32, ...)
    235