Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+3dnow | FileCheck %s
      2 
      3 define x86_mmx @stack_fold_pavgusb(x86_mmx %a, x86_mmx %b) {
      4   ;CHECK-LABEL: stack_fold_pavgusb
      5   ;CHECK:       pavgusb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
      6   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
      7   %2 = call x86_mmx @llvm.x86.3dnow.pavgusb(x86_mmx %a, x86_mmx %b) nounwind readnone
      8   ret x86_mmx %2
      9 }
     10 declare x86_mmx @llvm.x86.3dnow.pavgusb(x86_mmx, x86_mmx) nounwind readnone
     11 
     12 define x86_mmx @stack_fold_pf2id(x86_mmx %a) {
     13   ;CHECK-LABEL: stack_fold_pf2id
     14   ;CHECK:       pf2id {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
     15   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
     16   %2 = call x86_mmx @llvm.x86.3dnow.pf2id(x86_mmx %a) nounwind readnone
     17   ret x86_mmx %2
     18 }
     19 declare x86_mmx @llvm.x86.3dnow.pf2id(x86_mmx) nounwind readnone
     20 
     21 define x86_mmx @stack_fold_pf2iw(x86_mmx %a) {
     22   ;CHECK-LABEL: stack_fold_pf2iw
     23   ;CHECK:       pf2iw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
     24   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
     25   %2 = call x86_mmx @llvm.x86.3dnowa.pf2iw(x86_mmx %a) nounwind readnone
     26   ret x86_mmx %2
     27 }
     28 declare x86_mmx @llvm.x86.3dnowa.pf2iw(x86_mmx) nounwind readnone
     29 
     30 define x86_mmx @stack_fold_pfacc(x86_mmx %a, x86_mmx %b) {
     31   ;CHECK-LABEL: stack_fold_pfacc
     32   ;CHECK:       pfacc {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
     33   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
     34   %2 = call x86_mmx @llvm.x86.3dnow.pfacc(x86_mmx %a, x86_mmx %b) nounwind readnone
     35   ret x86_mmx %2
     36 }
     37 declare x86_mmx @llvm.x86.3dnow.pfacc(x86_mmx, x86_mmx) nounwind readnone
     38 
     39 define x86_mmx @stack_fold_pfadd(x86_mmx %a, x86_mmx %b) {
     40   ;CHECK-LABEL: stack_fold_pfadd
     41   ;CHECK:       pfadd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
     42   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
     43   %2 = call x86_mmx @llvm.x86.3dnow.pfadd(x86_mmx %a, x86_mmx %b) nounwind readnone
     44   ret x86_mmx %2
     45 }
     46 declare x86_mmx @llvm.x86.3dnow.pfadd(x86_mmx, x86_mmx) nounwind readnone
     47 
     48 define x86_mmx @stack_fold_pfcmpeq(x86_mmx %a, x86_mmx %b) {
     49   ;CHECK-LABEL: stack_fold_pfcmpeq
     50   ;CHECK:       pfcmpeq {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
     51   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
     52   %2 = call x86_mmx @llvm.x86.3dnow.pfcmpeq(x86_mmx %a, x86_mmx %b) nounwind readnone
     53   ret x86_mmx %2
     54 }
     55 declare x86_mmx @llvm.x86.3dnow.pfcmpeq(x86_mmx, x86_mmx) nounwind readnone
     56 
     57 define x86_mmx @stack_fold_pfcmpge(x86_mmx %a, x86_mmx %b) {
     58   ;CHECK-LABEL: stack_fold_pfcmpge
     59   ;CHECK:       pfcmpge {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
     60   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
     61   %2 = call x86_mmx @llvm.x86.3dnow.pfcmpge(x86_mmx %a, x86_mmx %b) nounwind readnone
     62   ret x86_mmx %2
     63 }
     64 declare x86_mmx @llvm.x86.3dnow.pfcmpge(x86_mmx, x86_mmx) nounwind readnone
     65 
     66 define x86_mmx @stack_fold_pfcmpgt(x86_mmx %a, x86_mmx %b) {
     67   ;CHECK-LABEL: stack_fold_pfcmpgt
     68   ;CHECK:       pfcmpgt {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
     69   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
     70   %2 = call x86_mmx @llvm.x86.3dnow.pfcmpgt(x86_mmx %a, x86_mmx %b) nounwind readnone
     71   ret x86_mmx %2
     72 }
     73 declare x86_mmx @llvm.x86.3dnow.pfcmpgt(x86_mmx, x86_mmx) nounwind readnone
     74 
     75 define x86_mmx @stack_fold_pfmax(x86_mmx %a, x86_mmx %b) {
     76   ;CHECK-LABEL: stack_fold_pfmax
     77   ;CHECK:       pfmax {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
     78   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
     79   %2 = call x86_mmx @llvm.x86.3dnow.pfmax(x86_mmx %a, x86_mmx %b) nounwind readnone
     80   ret x86_mmx %2
     81 }
     82 declare x86_mmx @llvm.x86.3dnow.pfmax(x86_mmx, x86_mmx) nounwind readnone
     83 
     84 define x86_mmx @stack_fold_pfmin(x86_mmx %a, x86_mmx %b) {
     85   ;CHECK-LABEL: stack_fold_pfmin
     86   ;CHECK:       pfmin {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
     87   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
     88   %2 = call x86_mmx @llvm.x86.3dnow.pfmin(x86_mmx %a, x86_mmx %b) nounwind readnone
     89   ret x86_mmx %2
     90 }
     91 declare x86_mmx @llvm.x86.3dnow.pfmin(x86_mmx, x86_mmx) nounwind readnone
     92 
     93 define x86_mmx @stack_fold_pfmul(x86_mmx %a, x86_mmx %b) {
     94   ;CHECK-LABEL: stack_fold_pfmul
     95   ;CHECK:       pfmul {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
     96   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
     97   %2 = call x86_mmx @llvm.x86.3dnow.pfmul(x86_mmx %a, x86_mmx %b) nounwind readnone
     98   ret x86_mmx %2
     99 }
    100 declare x86_mmx @llvm.x86.3dnow.pfmul(x86_mmx, x86_mmx) nounwind readnone
    101 
    102 define x86_mmx @stack_fold_pfnacc(x86_mmx %a, x86_mmx %b) {
    103   ;CHECK-LABEL: stack_fold_pfnacc
    104   ;CHECK:       pfnacc {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    105   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    106   %2 = call x86_mmx @llvm.x86.3dnowa.pfnacc(x86_mmx %a, x86_mmx %b) nounwind readnone
    107   ret x86_mmx %2
    108 }
    109 declare x86_mmx @llvm.x86.3dnowa.pfnacc(x86_mmx, x86_mmx) nounwind readnone
    110 
    111 define x86_mmx @stack_fold_pfpnacc(x86_mmx %a, x86_mmx %b) {
    112   ;CHECK-LABEL: stack_fold_pfpnacc
    113   ;CHECK:       pfpnacc {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    114   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    115   %2 = call x86_mmx @llvm.x86.3dnowa.pfpnacc(x86_mmx %a, x86_mmx %b) nounwind readnone
    116   ret x86_mmx %2
    117 }
    118 declare x86_mmx @llvm.x86.3dnowa.pfpnacc(x86_mmx, x86_mmx) nounwind readnone
    119 
    120 define x86_mmx @stack_fold_pfrcp(x86_mmx %a) {
    121   ;CHECK-LABEL: stack_fold_pfrcp
    122   ;CHECK:       pfrcp {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    123   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    124   %2 = call x86_mmx @llvm.x86.3dnow.pfrcp(x86_mmx %a) nounwind readnone
    125   ret x86_mmx %2
    126 }
    127 declare x86_mmx @llvm.x86.3dnow.pfrcp(x86_mmx) nounwind readnone
    128 
    129 define x86_mmx @stack_fold_pfrcpit1(x86_mmx %a, x86_mmx %b) {
    130   ;CHECK-LABEL: stack_fold_pfrcpit1
    131   ;CHECK:       pfrcpit1 {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    132   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    133   %2 = call x86_mmx @llvm.x86.3dnow.pfrcpit1(x86_mmx %a, x86_mmx %b) nounwind readnone
    134   ret x86_mmx %2
    135 }
    136 declare x86_mmx @llvm.x86.3dnow.pfrcpit1(x86_mmx, x86_mmx) nounwind readnone
    137 
    138 define x86_mmx @stack_fold_pfrcpit2(x86_mmx %a, x86_mmx %b) {
    139   ;CHECK-LABEL: stack_fold_pfrcpit2
    140   ;CHECK:       pfrcpit2 {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    141   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    142   %2 = call x86_mmx @llvm.x86.3dnow.pfrcpit2(x86_mmx %a, x86_mmx %b) nounwind readnone
    143   ret x86_mmx %2
    144 }
    145 declare x86_mmx @llvm.x86.3dnow.pfrcpit2(x86_mmx, x86_mmx) nounwind readnone
    146 
    147 define x86_mmx @stack_fold_pfrsqit1(x86_mmx %a, x86_mmx %b) {
    148   ;CHECK-LABEL: stack_fold_pfrsqit1
    149   ;CHECK:       pfrsqit1 {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    150   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    151   %2 = call x86_mmx @llvm.x86.3dnow.pfrsqit1(x86_mmx %a, x86_mmx %b) nounwind readnone
    152   ret x86_mmx %2
    153 }
    154 declare x86_mmx @llvm.x86.3dnow.pfrsqit1(x86_mmx, x86_mmx) nounwind readnone
    155 
    156 define x86_mmx @stack_fold_pfrsqrt(x86_mmx %a) {
    157   ;CHECK-LABEL: stack_fold_pfrsqrt
    158   ;CHECK:       pfrsqrt {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    159   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    160   %2 = call x86_mmx @llvm.x86.3dnow.pfrsqrt(x86_mmx %a) nounwind readnone
    161   ret x86_mmx %2
    162 }
    163 declare x86_mmx @llvm.x86.3dnow.pfrsqrt(x86_mmx) nounwind readnone
    164 
    165 define x86_mmx @stack_fold_pfsub(x86_mmx %a, x86_mmx %b) {
    166   ;CHECK-LABEL: stack_fold_pfsub
    167   ;CHECK:       pfsub {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    168   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    169   %2 = call x86_mmx @llvm.x86.3dnow.pfsub(x86_mmx %a, x86_mmx %b) nounwind readnone
    170   ret x86_mmx %2
    171 }
    172 declare x86_mmx @llvm.x86.3dnow.pfsub(x86_mmx, x86_mmx) nounwind readnone
    173 
    174 define x86_mmx @stack_fold_pfsubr(x86_mmx %a, x86_mmx %b) {
    175   ;CHECK-LABEL: stack_fold_pfsubr
    176   ;CHECK:       pfsubr {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    177   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    178   %2 = call x86_mmx @llvm.x86.3dnow.pfsubr(x86_mmx %a, x86_mmx %b) nounwind readnone
    179   ret x86_mmx %2
    180 }
    181 declare x86_mmx @llvm.x86.3dnow.pfsubr(x86_mmx, x86_mmx) nounwind readnone
    182 
    183 define x86_mmx @stack_fold_pi2fd(x86_mmx %a) {
    184   ;CHECK-LABEL: stack_fold_pi2fd
    185   ;CHECK:       pi2fd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    186   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    187   %2 = call x86_mmx @llvm.x86.3dnow.pi2fd(x86_mmx %a) nounwind readnone
    188   ret x86_mmx %2
    189 }
    190 declare x86_mmx @llvm.x86.3dnow.pi2fd(x86_mmx) nounwind readnone
    191 
    192 define x86_mmx @stack_fold_pi2fw(x86_mmx %a) {
    193   ;CHECK-LABEL: stack_fold_pi2fw
    194   ;CHECK:       pi2fw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    195   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    196   %2 = call x86_mmx @llvm.x86.3dnowa.pi2fw(x86_mmx %a) nounwind readnone
    197   ret x86_mmx %2
    198 }
    199 declare x86_mmx @llvm.x86.3dnowa.pi2fw(x86_mmx) nounwind readnone
    200 
    201 define x86_mmx @stack_fold_pmulhrw(x86_mmx %a, x86_mmx %b) {
    202   ;CHECK-LABEL: stack_fold_pmulhrw
    203   ;CHECK:       pmulhrw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    204   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    205   %2 = call x86_mmx @llvm.x86.3dnow.pmulhrw(x86_mmx %a, x86_mmx %b) nounwind readnone
    206   ret x86_mmx %2
    207 }
    208 declare x86_mmx @llvm.x86.3dnow.pmulhrw(x86_mmx, x86_mmx) nounwind readnone
    209 
    210 define x86_mmx @stack_fold_pswapd(x86_mmx %a) {
    211   ;CHECK-LABEL: stack_fold_pswapd
    212   ;CHECK:       pswapd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
    213   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
    214   %2 = call x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx %a) nounwind readnone
    215   ret x86_mmx %2
    216 }
    217 declare x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx) nounwind readnone
    218