130 lines · plain
1; RUN: llc -mtriple=amdgcn -mcpu=tahiti < %s | FileCheck -check-prefixes=GCN,SI %s2; RUN: llc -mtriple=amdgcn -mcpu=hawaii < %s | FileCheck -check-prefixes=GCN,NOSI %s3 4@compute_lds = external addrspace(3) global [512 x i32], align 165 6; GCN-LABEL: {{^}}store_aligned:7; GCN: ds_write_b648define amdgpu_cs void @store_aligned(ptr addrspace(3) %ptr) #0 {9entry:10 %ptr.gep.1 = getelementptr i32, ptr addrspace(3) %ptr, i32 111 12 store i32 42, ptr addrspace(3) %ptr, align 813 store i32 43, ptr addrspace(3) %ptr.gep.114 ret void15}16 17 18; GCN-LABEL: {{^}}load_aligned:19; GCN: ds_read_b6420define amdgpu_cs <2 x float> @load_aligned(ptr addrspace(3) %ptr) #0 {21entry:22 %ptr.gep.1 = getelementptr i32, ptr addrspace(3) %ptr, i32 123 24 %v.0 = load i32, ptr addrspace(3) %ptr, align 825 %v.1 = load i32, ptr addrspace(3) %ptr.gep.126 27 %r.0 = insertelement <2 x i32> poison, i32 %v.0, i32 028 %r.1 = insertelement <2 x i32> %r.0, i32 %v.1, i32 129 %bc = bitcast <2 x i32> %r.1 to <2 x float>30 ret <2 x float> %bc31}32 33 34; GCN-LABEL: {{^}}store_global_const_idx:35; GCN: ds_write2_b3236define amdgpu_cs void @store_global_const_idx() #0 {37entry:38 %ptr.a = getelementptr [512 x i32], ptr addrspace(3) @compute_lds, i32 0, i32 339 %ptr.b = getelementptr [512 x i32], ptr addrspace(3) @compute_lds, i32 0, i32 440 41 store i32 42, ptr addrspace(3) %ptr.a42 store i32 43, ptr addrspace(3) %ptr.b43 ret void44}45 46 47; GCN-LABEL: {{^}}load_global_const_idx:48; GCN: ds_read2_b3249define amdgpu_cs <2 x float> @load_global_const_idx() #0 {50entry:51 %ptr.a = getelementptr [512 x i32], ptr addrspace(3) @compute_lds, i32 0, i32 352 %ptr.b = getelementptr [512 x i32], ptr addrspace(3) @compute_lds, i32 0, i32 453 54 %v.0 = load i32, ptr addrspace(3) %ptr.a55 %v.1 = load i32, ptr addrspace(3) %ptr.b56 57 %r.0 = insertelement <2 x i32> poison, i32 %v.0, i32 058 %r.1 = insertelement <2 x i32> %r.0, i32 %v.1, i32 159 %bc = bitcast <2 x i32> %r.1 to <2 x float>60 ret <2 x float> %bc61}62 63 64; GCN-LABEL: {{^}}store_global_var_idx_case1:65; SI: ds_write_b3266; SI: ds_write_b3267; NOSI: ds_write2_b3268define amdgpu_cs void @store_global_var_idx_case1(i32 %idx) #0 {69entry:70 %ptr.a = getelementptr [512 x i32], ptr addrspace(3) @compute_lds, i32 0, i32 %idx71 %ptr.b = getelementptr i32, ptr addrspace(3) %ptr.a, i32 172 73 store i32 42, ptr addrspace(3) %ptr.a74 store i32 43, ptr addrspace(3) %ptr.b75 ret void76}77 78 79; GCN-LABEL: {{^}}load_global_var_idx_case1:80; SI: ds_read_b3281; SI: ds_read_b3282; NOSI: ds_read2_b3283define amdgpu_cs <2 x float> @load_global_var_idx_case1(i32 %idx) #0 {84entry:85 %ptr.a = getelementptr [512 x i32], ptr addrspace(3) @compute_lds, i32 0, i32 %idx86 %ptr.b = getelementptr i32, ptr addrspace(3) %ptr.a, i32 187 88 %v.0 = load i32, ptr addrspace(3) %ptr.a89 %v.1 = load i32, ptr addrspace(3) %ptr.b90 91 %r.0 = insertelement <2 x i32> poison, i32 %v.0, i32 092 %r.1 = insertelement <2 x i32> %r.0, i32 %v.1, i32 193 %bc = bitcast <2 x i32> %r.1 to <2 x float>94 ret <2 x float> %bc95}96 97 98; GCN-LABEL: {{^}}store_global_var_idx_case2:99; GCN: ds_write2_b32100define amdgpu_cs void @store_global_var_idx_case2(i32 %idx) #0 {101entry:102 %idx.and = and i32 %idx, 255103 %ptr.a = getelementptr [512 x i32], ptr addrspace(3) @compute_lds, i32 0, i32 %idx.and104 %ptr.b = getelementptr i32, ptr addrspace(3) %ptr.a, i32 1105 106 store i32 42, ptr addrspace(3) %ptr.a107 store i32 43, ptr addrspace(3) %ptr.b108 ret void109}110 111 112; GCN-LABEL: {{^}}load_global_var_idx_case2:113; GCN: ds_read2_b32114define amdgpu_cs <2 x float> @load_global_var_idx_case2(i32 %idx) #0 {115entry:116 %idx.and = and i32 %idx, 255117 %ptr.a = getelementptr [512 x i32], ptr addrspace(3) @compute_lds, i32 0, i32 %idx.and118 %ptr.b = getelementptr i32, ptr addrspace(3) %ptr.a, i32 1119 120 %v.0 = load i32, ptr addrspace(3) %ptr.a121 %v.1 = load i32, ptr addrspace(3) %ptr.b122 123 %r.0 = insertelement <2 x i32> poison, i32 %v.0, i32 0124 %r.1 = insertelement <2 x i32> %r.0, i32 %v.1, i32 1125 %bc = bitcast <2 x i32> %r.1 to <2 x float>126 ret <2 x float> %bc127}128 129attributes #0 = { nounwind }130