1 ;RUN: llc < %s -march=amdgcn -mtriple=amdgcn---amdgiz -verify-machineinstrs | FileCheck -check-prefixes=CHECK,GCN %s 2 ;RUN: llc < %s -march=r600 -mtriple=r600---amdgiz -verify-machineinstrs | FileCheck -check-prefixes=CHECK,R600 %s 3 4 %struct.S = type { i32 addrspace(5)*, i32 addrspace(1)*, i32 addrspace(4)*, i32 addrspace(3)*, i32*, i32 addrspace(2)*} 5 6 ; CHECK-LABEL: nullptr_priv: 7 ; CHECK-NEXT: .long 0 8 @nullptr_priv = global i32 addrspace(5)* addrspacecast (i32* null to i32 addrspace(5)*) 9 10 ; CHECK-LABEL: nullptr_glob: 11 ; GCN-NEXT: .quad 0 12 ; R600-NEXT: .long 0 13 @nullptr_glob = global i32 addrspace(1)* addrspacecast (i32* null to i32 addrspace(1)*) 14 15 ; CHECK-LABEL: nullptr_const: 16 ; GCN-NEXT: .quad 0 17 ; R600-NEXT: .long 0 18 @nullptr_const = global i32 addrspace(4)* addrspacecast (i32* null to i32 addrspace(4)*) 19 20 ; CHECK-LABEL: nullptr_local: 21 ; CHECK-NEXT: .long -1 22 @nullptr_local = global i32 addrspace(3)* addrspacecast (i32* null to i32 addrspace(3)*) 23 24 ; CHECK-LABEL: nullptr_region: 25 ; CHECK-NEXT: .long -1 26 @nullptr_region = global i32 addrspace(2)* addrspacecast (i32* null to i32 addrspace(2)*) 27 28 ; CHECK-LABEL: nullptr6: 29 ; R600-NEXT: .long 0 30 @nullptr6 = global i32 addrspace(6)* addrspacecast (i32* null to i32 addrspace(6)*) 31 32 ; CHECK-LABEL: nullptr7: 33 ; R600-NEXT: .long 0 34 @nullptr7 = global i32 addrspace(7)* addrspacecast (i32* null to i32 addrspace(7)*) 35 36 ; CHECK-LABEL: nullptr8: 37 ; R600-NEXT: .long 0 38 @nullptr8 = global i32 addrspace(8)* addrspacecast (i32* null to i32 addrspace(8)*) 39 40 ; CHECK-LABEL: nullptr9: 41 ; R600-NEXT: .long 0 42 @nullptr9 = global i32 addrspace(9)* addrspacecast (i32* null to i32 addrspace(9)*) 43 44 ; CHECK-LABEL: nullptr10: 45 ; R600-NEXT: .long 0 46 @nullptr10 = global i32 addrspace(10)* addrspacecast (i32* null to i32 addrspace(10)*) 47 48 ; CHECK-LABEL: nullptr11: 49 ; R600-NEXT: .long 0 50 @nullptr11 = global i32 addrspace(11)* addrspacecast (i32* null to i32 addrspace(11)*) 51 52 ; CHECK-LABEL: nullptr12: 53 ; R600-NEXT: .long 0 54 @nullptr12 = global i32 addrspace(12)* addrspacecast (i32* null to i32 addrspace(12)*) 55 56 ; CHECK-LABEL: nullptr13: 57 ; R600-NEXT: .long 0 58 @nullptr13 = global i32 addrspace(13)* addrspacecast (i32* null to i32 addrspace(13)*) 59 60 ; CHECK-LABEL: nullptr14: 61 ; R600-NEXT: .long 0 62 @nullptr14 = global i32 addrspace(14)* addrspacecast (i32* null to i32 addrspace(14)*) 63 64 ; CHECK-LABEL: nullptr15: 65 ; R600-NEXT: .long 0 66 @nullptr15 = global i32 addrspace(15)* addrspacecast (i32* null to i32 addrspace(15)*) 67 68 ; CHECK-LABEL: nullptr16: 69 ; R600-NEXT: .long 0 70 @nullptr16 = global i32 addrspace(16)* addrspacecast (i32* null to i32 addrspace(16)*) 71 72 ; CHECK-LABEL: nullptr17: 73 ; R600-NEXT: .long 0 74 @nullptr17 = global i32 addrspace(17)* addrspacecast (i32* null to i32 addrspace(17)*) 75 76 ; CHECK-LABEL: nullptr18: 77 ; R600-NEXT: .long 0 78 @nullptr18 = global i32 addrspace(18)* addrspacecast (i32* null to i32 addrspace(18)*) 79 80 ; CHECK-LABEL: nullptr19: 81 ; R600-NEXT: .long 0 82 @nullptr19 = global i32 addrspace(19)* addrspacecast (i32* null to i32 addrspace(19)*) 83 84 ; CHECK-LABEL: nullptr20: 85 ; R600-NEXT: .long 0 86 @nullptr20 = global i32 addrspace(20)* addrspacecast (i32* null to i32 addrspace(20)*) 87 88 ; CHECK-LABEL: nullptr21: 89 ; R600-NEXT: .long 0 90 @nullptr21 = global i32 addrspace(21)* addrspacecast (i32* null to i32 addrspace(21)*) 91 92 ; CHECK-LABEL: nullptr22: 93 ; R600-NEXT: .long 0 94 @nullptr22 = global i32 addrspace(22)* addrspacecast (i32* null to i32 addrspace(22)*) 95 96 ; CHECK-LABEL: nullptr23: 97 ; R600-NEXT: .long 0 98 @nullptr23 = global i32 addrspace(23)* addrspacecast (i32* null to i32 addrspace(23)*) 99 100 ; CHECK-LABEL: structWithPointers: 101 ; CHECK-NEXT: .long 0 102 ; GCN-NEXT: .zero 4 103 ; GCN-NEXT: .quad 0 104 ; R600-NEXT: .long 0 105 ; GCN-NEXT: .quad 0 106 ; R600-NEXT: .long 0 107 ; CHECK-NEXT: .long -1 108 ; GCN-NEXT: .zero 4 109 ; GCN-NEXT: .quad 0 110 ; R600-NEXT: .long 0 111 ; CHECK-NEXT: .long -1 112 ; GCN-NEXT: .zero 4 113 @structWithPointers = addrspace(1) global %struct.S { 114 i32 addrspace(5)* addrspacecast (i32* null to i32 addrspace(5)*), 115 i32 addrspace(1)* addrspacecast (i32* null to i32 addrspace(1)*), 116 i32 addrspace(4)* addrspacecast (i32* null to i32 addrspace(4)*), 117 i32 addrspace(3)* addrspacecast (i32* null to i32 addrspace(3)*), 118 i32* null, 119 i32 addrspace(2)* addrspacecast (i32* null to i32 addrspace(2)*)}, align 4 120