Home | History | Annotate | Download | only in AMDGPU
      1 ; RUN: not llc -march=amdgcn -verify-machineinstrs < %s 2>&1 | FileCheck -check-prefix=ERROR %s
      2 
      3 ; ERROR: error: scalar registers limit of 104 exceeded (106) in use_too_many_sgprs_tahiti
      4 define amdgpu_kernel void @use_too_many_sgprs_tahiti() #0 {
      5   call void asm sideeffect "", "~{s[0:7]}" ()
      6   call void asm sideeffect "", "~{s[8:15]}" ()
      7   call void asm sideeffect "", "~{s[16:23]}" ()
      8   call void asm sideeffect "", "~{s[24:31]}" ()
      9   call void asm sideeffect "", "~{s[32:39]}" ()
     10   call void asm sideeffect "", "~{s[40:47]}" ()
     11   call void asm sideeffect "", "~{s[48:55]}" ()
     12   call void asm sideeffect "", "~{s[56:63]}" ()
     13   call void asm sideeffect "", "~{s[64:71]}" ()
     14   call void asm sideeffect "", "~{s[72:79]}" ()
     15   call void asm sideeffect "", "~{s[80:87]}" ()
     16   call void asm sideeffect "", "~{s[88:95]}" ()
     17   call void asm sideeffect "", "~{s[96:103]}" ()
     18   call void asm sideeffect "", "~{vcc}" ()
     19   ret void
     20 }
     21 
     22 ; ERROR: error: scalar registers limit of 104 exceeded (106) in use_too_many_sgprs_bonaire
     23 define amdgpu_kernel void @use_too_many_sgprs_bonaire() #1 {
     24   call void asm sideeffect "", "~{s[0:7]}" ()
     25   call void asm sideeffect "", "~{s[8:15]}" ()
     26   call void asm sideeffect "", "~{s[16:23]}" ()
     27   call void asm sideeffect "", "~{s[24:31]}" ()
     28   call void asm sideeffect "", "~{s[32:39]}" ()
     29   call void asm sideeffect "", "~{s[40:47]}" ()
     30   call void asm sideeffect "", "~{s[48:55]}" ()
     31   call void asm sideeffect "", "~{s[56:63]}" ()
     32   call void asm sideeffect "", "~{s[64:71]}" ()
     33   call void asm sideeffect "", "~{s[72:79]}" ()
     34   call void asm sideeffect "", "~{s[80:87]}" ()
     35   call void asm sideeffect "", "~{s[88:95]}" ()
     36   call void asm sideeffect "", "~{s[96:103]}" ()
     37   call void asm sideeffect "", "~{vcc}" ()
     38   ret void
     39 }
     40 
     41 ; ERROR: error: scalar registers limit of 104 exceeded (108) in use_too_many_sgprs_bonaire_flat_scr
     42 define amdgpu_kernel void @use_too_many_sgprs_bonaire_flat_scr() #1 {
     43   call void asm sideeffect "", "~{s[0:7]}" ()
     44   call void asm sideeffect "", "~{s[8:15]}" ()
     45   call void asm sideeffect "", "~{s[16:23]}" ()
     46   call void asm sideeffect "", "~{s[24:31]}" ()
     47   call void asm sideeffect "", "~{s[32:39]}" ()
     48   call void asm sideeffect "", "~{s[40:47]}" ()
     49   call void asm sideeffect "", "~{s[48:55]}" ()
     50   call void asm sideeffect "", "~{s[56:63]}" ()
     51   call void asm sideeffect "", "~{s[64:71]}" ()
     52   call void asm sideeffect "", "~{s[72:79]}" ()
     53   call void asm sideeffect "", "~{s[80:87]}" ()
     54   call void asm sideeffect "", "~{s[88:95]}" ()
     55   call void asm sideeffect "", "~{s[96:103]}" ()
     56   call void asm sideeffect "", "~{vcc}" ()
     57   call void asm sideeffect "", "~{flat_scratch}" ()
     58   ret void
     59 }
     60 
     61 ; ERROR: error: scalar registers limit of 96 exceeded (98) in use_too_many_sgprs_iceland
     62 define amdgpu_kernel void @use_too_many_sgprs_iceland() #2 {
     63   call void asm sideeffect "", "~{vcc}" ()
     64   call void asm sideeffect "", "~{s[0:7]}" ()
     65   call void asm sideeffect "", "~{s[8:15]}" ()
     66   call void asm sideeffect "", "~{s[16:23]}" ()
     67   call void asm sideeffect "", "~{s[24:31]}" ()
     68   call void asm sideeffect "", "~{s[32:39]}" ()
     69   call void asm sideeffect "", "~{s[40:47]}" ()
     70   call void asm sideeffect "", "~{s[48:55]}" ()
     71   call void asm sideeffect "", "~{s[56:63]}" ()
     72   call void asm sideeffect "", "~{s[64:71]}" ()
     73   call void asm sideeffect "", "~{s[72:79]}" ()
     74   call void asm sideeffect "", "~{s[80:87]}" ()
     75   call void asm sideeffect "", "~{s[88:95]}" ()
     76   ret void
     77 }
     78 
     79 ; ERROR: error: addressable scalar registers limit of 102 exceeded (103) in use_too_many_sgprs_fiji
     80 define amdgpu_kernel void @use_too_many_sgprs_fiji() #3 {
     81   call void asm sideeffect "", "~{s[0:7]}" ()
     82   call void asm sideeffect "", "~{s[8:15]}" ()
     83   call void asm sideeffect "", "~{s[16:23]}" ()
     84   call void asm sideeffect "", "~{s[24:31]}" ()
     85   call void asm sideeffect "", "~{s[32:39]}" ()
     86   call void asm sideeffect "", "~{s[40:47]}" ()
     87   call void asm sideeffect "", "~{s[48:55]}" ()
     88   call void asm sideeffect "", "~{s[56:63]}" ()
     89   call void asm sideeffect "", "~{s[64:71]}" ()
     90   call void asm sideeffect "", "~{s[72:79]}" ()
     91   call void asm sideeffect "", "~{s[80:87]}" ()
     92   call void asm sideeffect "", "~{s[88:95]}" ()
     93   call void asm sideeffect "", "~{s[96:99]}" ()
     94   call void asm sideeffect "", "~{s[100:101]}" ()
     95   call void asm sideeffect "", "~{s102}" ()
     96   ret void
     97 }
     98 
     99 attributes #0 = { nounwind "target-cpu"="tahiti" }
    100 attributes #1 = { nounwind "target-cpu"="bonaire" }
    101 attributes #2 = { nounwind "target-cpu"="iceland" }
    102 attributes #3 = { nounwind "target-cpu"="fiji" }
    103