diff options
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/CodeGen/Hexagon/select-instr-align.ll | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/Hexagon/select-instr-align.ll b/llvm/test/CodeGen/Hexagon/select-instr-align.ll new file mode 100644 index 00000000000..e3b2929d52f --- /dev/null +++ b/llvm/test/CodeGen/Hexagon/select-instr-align.ll @@ -0,0 +1,31 @@ +; RUN: llc -march=hexagon -enable-hexagon-hvx < %s | FileCheck %s +; CHECK-LABEL: aligned_load: +; CHECK: = vmem({{.*}}) +; CHECK-LABEL: aligned_store: +; CHECK: vmem({{.*}}) = +; CHECK-LABEL: unaligned_load: +; CHECK: = vmemu({{.*}}) +; CHECK-LABEL: unaligned_store: +; CHECK: vmemu({{.*}}) = + +define <16 x i32> @aligned_load(<16 x i32>* %p, <16 x i32> %a) { + %v = load <16 x i32>, <16 x i32>* %p, align 64 + ret <16 x i32> %v +} + +define void @aligned_store(<16 x i32>* %p, <16 x i32> %a) { + store <16 x i32> %a, <16 x i32>* %p, align 64 + ret void +} + +define <16 x i32> @unaligned_load(<16 x i32>* %p, <16 x i32> %a) { + %v = load <16 x i32>, <16 x i32>* %p, align 32 + ret <16 x i32> %v +} + +define void @unaligned_store(<16 x i32>* %p, <16 x i32> %a) { + store <16 x i32> %a, <16 x i32>* %p, align 32 + ret void +} + + |