[flang][cuda] Allow DO CONCURRENT in cuf kernel (#124190)
[llvm-project.git] / llvm / test / CodeGen / Hexagon / load-widen.ll
blob8e84e05adbc12f4d871632d54e704e610fe82f19
1 ; RUN: llc -mtriple=hexagon < %s | FileCheck %s
2 ; RUN: llc -mtriple=hexagon -disable-load-widen < %s | FileCheck %s --check-prefix=CHECK-DISABLE
4 %struct.node32 = type { ptr, ptr }
6 %struct.node16_4 = type { i16, i16, i16, i16 }
8 define void @test1(ptr nocapture %node) nounwind {
9 entry:
10 ; There should be a memd and not two memw
11 ; CHECK-LABEL: test1
12 ; CHECK: memd
13   %0 = load ptr, ptr %node, align 8
14   %cgep = getelementptr inbounds %struct.node32, ptr %node, i32 0, i32 1
15   %1 = load ptr, ptr %cgep, align 4
16   store ptr %0, ptr %1, align 8
17   ret void
20 define void @test2(ptr nocapture %node) nounwind {
21 entry:
22 ; Same as test1 but with load widening disabled.
23 ; CHECK-DISABLE-LABEL: test2
24 ; CHECK-DISABLE: memw
25 ; CHECK-DISABLE: memw
26   %0 = load ptr, ptr %node, align 8
27   %cgep = getelementptr inbounds %struct.node32, ptr %node, i32 0, i32 1
28   %1 = load ptr, ptr %cgep, align 4
29   store ptr %0, ptr %1, align 8
30   ret void
33 define void @test3(ptr nocapture %node) nounwind {
34 entry:
35 ; No memd because first load is not 8 byte aligned
36 ; CHECK-LABEL: test3
37 ; CHECK-NOT: memd
38   %0 = load ptr, ptr %node, align 4
39   %cgep = getelementptr inbounds %struct.node32, ptr %node, i32 0, i32 1
40   %1 = load ptr, ptr %cgep, align 4
41   store ptr %0, ptr %1, align 8
42   ret void