[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / arm64_32-fastisel.ll
blob9a01aacab6c9ad845200a6739286bb3ae2a7bff3
1 ; RUN: llc -mtriple=arm64_32-apple-ios -O0 -fast-isel %s -o - | FileCheck %s
2 @var = global ptr null
4 define void @test_store_release_ptr() {
5 ; CHECK-LABEL: test_store_release_ptr
6 ; CHECK: mov [[ZERO:w[0-9]+]], wzr
7 ; CHECK: stlr [[ZERO]]
8   store atomic ptr null, ptr @var release, align 4
9   br label %next
11 next:
12   ret void
15 declare [2 x i32] @callee()
17 define void @test_struct_return(ptr %addr) {
18 ; CHECK-LABEL: test_struct_return:
19 ; CHECK: bl _callee
20 ; CHECK: x[[COPYX0:[0-9]+]], x0
21 ; CHECK-DAG: lsr [[HI:x[0-9]+]], x[[COPYX0]], #32
22 ; CHECK-DAG: str w[[COPYX0]]
23   %res = call [2 x i32] @callee()
24   %res.0 = extractvalue [2 x i32] %res, 0
25   store i32 %res.0, ptr %addr
26   %res.1 = extractvalue [2 x i32] %res, 1
27   store i32 %res.1, ptr %addr
28   ret void
31 define ptr @test_ret_ptr(i64 %in) {
32 ; CHECK-LABEL: test_ret_ptr:
33 ; CHECK: add [[TMP:x[0-9]]], x0, #1
34 ; CHECK: and x0, [[TMP]], #0xffffffff
36   %sum = add i64 %in, 1
37   %res = inttoptr i64 %sum to ptr
38   ret ptr %res
41 ; Handled by SDAG because the struct confuses FastISel, which is fine.
42 define {ptr} @test_ret_ptr_struct(i64 %in) {
43 ; CHECK-LABEL: test_ret_ptr_struct:
44 ; CHECK: add {{w[0-9]+}}, {{w[0-9]+}}, #1
46   %sum = add i64 %in, 1
47   %res.ptr = inttoptr i64 %sum to ptr
48   %res = insertvalue {ptr} undef, ptr %res.ptr, 0
49   ret {ptr} %res