|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
|
2 |
| -; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -passes=amdgpu-promote-alloca < %s | FileCheck %s |
| 2 | +; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -passes=amdgpu-promote-alloca -amdgpu-promote-alloca-to-vector-limit=512 < %s | FileCheck %s |
3 | 3 |
|
4 | 4 | target datalayout = "e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5"
|
5 | 5 |
|
@@ -332,3 +332,48 @@ entry:
|
332 | 332 | store <3 x i32> %val, ptr addrspace(5) %stack
|
333 | 333 | ret void
|
334 | 334 | }
|
| 335 | + |
| 336 | +define void @test_accessty_too_small(<2 x i16> %val) { |
| 337 | +; CHECK-LABEL: define void @test_accessty_too_small |
| 338 | +; CHECK-SAME: (<2 x i16> [[VAL:%.*]]) { |
| 339 | +; CHECK-NEXT: entry: |
| 340 | +; CHECK-NEXT: [[STACK:%.*]] = alloca [4 x i64], align 4, addrspace(5) |
| 341 | +; CHECK-NEXT: store <2 x i16> [[VAL]], ptr addrspace(5) [[STACK]], align 4 |
| 342 | +; CHECK-NEXT: ret void |
| 343 | +; |
| 344 | +entry: |
| 345 | + %stack = alloca [4 x i64], align 4, addrspace(5) |
| 346 | + store <2 x i16> %val, ptr addrspace(5) %stack |
| 347 | + ret void |
| 348 | +} |
| 349 | + |
| 350 | +define void @store_2xi32_into_double(double %foo) { |
| 351 | +; CHECK-LABEL: define void @store_2xi32_into_double |
| 352 | +; CHECK-SAME: (double [[FOO:%.*]]) { |
| 353 | +; CHECK-NEXT: [[DUMMYUSER0:%.*]] = freeze double 0x5F0000005E |
| 354 | +; CHECK-NEXT: [[DUMMYUSER1:%.*]] = freeze double undef |
| 355 | +; CHECK-NEXT: [[DUMMYUSER2:%.*]] = freeze double undef |
| 356 | +; CHECK-NEXT: [[DUMMYUSER3:%.*]] = freeze double undef |
| 357 | +; CHECK-NEXT: ret void |
| 358 | +; |
| 359 | + %alloca = alloca [9 x double], align 8, addrspace(5) |
| 360 | + |
| 361 | + store <2 x i32> <i32 94, i32 95>, ptr addrspace(5) %alloca, align 8 |
| 362 | + %load0 = load double, ptr addrspace(5) %alloca, align 8 |
| 363 | + %dummyuser0 = freeze double %load0 |
| 364 | + |
| 365 | + %idx4 = getelementptr inbounds [9 x double], ptr addrspace(5) %alloca, i32 0, i32 4 |
| 366 | + %idx5 = getelementptr inbounds [9 x double], ptr addrspace(5) %alloca, i32 0, i32 5 |
| 367 | + store <4 x i32> <i32 102, i32 103, i32 104, i32 105>, ptr addrspace(5) %idx4, align 8 |
| 368 | + %load1 = load double, ptr addrspace(5) %idx4, align 8 |
| 369 | + %dummyuser1 = freeze double %load1 |
| 370 | + %load2 = load double, ptr addrspace(5) %idx5, align 8 |
| 371 | + %dummyuser2 = freeze double %load2 |
| 372 | + |
| 373 | + %idx8 = getelementptr inbounds [9 x double], ptr addrspace(5) %alloca, i32 0, i32 8 |
| 374 | + store <2 x i32> <i32 110, i32 111>, ptr addrspace(5) %idx8, align 8 |
| 375 | + %load3 = load double, ptr addrspace(5) %idx8, align 8 |
| 376 | + %dummyuser3 = freeze double %load3 |
| 377 | + |
| 378 | + ret void |
| 379 | +} |
0 commit comments