brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · e732f22 Raw
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