[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / freeze.ll
bloba793ecbf03f65602de98886da3f82220cbfc3150
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s 2>&1 | FileCheck %s
3 ; RUN: llc -mtriple=aarch64-unknown-linux-gnu -global-isel -global-isel-abort=1 < %s 2>&1 | FileCheck %s --check-prefix=GISEL
5 %struct.T = type { i32, i32 }
7 define i32 @freeze_int() {
8 ; CHECK-LABEL: freeze_int:
9 ; CHECK:       // %bb.0:
10 ; CHECK-NEXT:    mul w0, w8, w8
11 ; CHECK-NEXT:    ret
13 ; GISEL-LABEL: freeze_int:
14 ; GISEL:       // %bb.0:
15 ; GISEL-NEXT:    mul w0, w8, w8
16 ; GISEL-NEXT:    ret
17   %y1 = freeze i32 undef
18   %t1 = mul i32 %y1, %y1
19   ret i32 %t1
22 define i5 @freeze_int2() {
23 ; CHECK-LABEL: freeze_int2:
24 ; CHECK:       // %bb.0:
25 ; CHECK-NEXT:    mul w0, w8, w8
26 ; CHECK-NEXT:    ret
28 ; GISEL-LABEL: freeze_int2:
29 ; GISEL:       // %bb.0:
30 ; GISEL-NEXT:    mul w0, w8, w8
31 ; GISEL-NEXT:    ret
32   %y1 = freeze i5 undef
33   %t1 = mul i5 %y1, %y1
34   ret i5 %t1
37 define float @freeze_float() {
38 ; CHECK-LABEL: freeze_float:
39 ; CHECK:       // %bb.0:
40 ; CHECK-NEXT:    fadd s0, s0, s0
41 ; CHECK-NEXT:    ret
43 ; GISEL-LABEL: freeze_float:
44 ; GISEL:       // %bb.0:
45 ; GISEL-NEXT:    fadd s0, s0, s0
46 ; GISEL-NEXT:    ret
47   %y1 = freeze float undef
48   %t1 = fadd float %y1, %y1
49   ret float %t1
52 define <2 x i32> @freeze_ivec() {
53 ; CHECK-LABEL: freeze_ivec:
54 ; CHECK:       // %bb.0:
55 ; CHECK-NEXT:    add v0.2s, v0.2s, v0.2s
56 ; CHECK-NEXT:    ret
58 ; GISEL-LABEL: freeze_ivec:
59 ; GISEL:       // %bb.0:
60 ; GISEL-NEXT:    add v0.2s, v0.2s, v0.2s
61 ; GISEL-NEXT:    ret
62   %y1 = freeze <2 x i32> undef
63   %t1 = add <2 x i32> %y1, %y1
64   ret <2 x i32> %t1
67 define ptr @freeze_ptr() {
68 ; CHECK-LABEL: freeze_ptr:
69 ; CHECK:       // %bb.0:
70 ; CHECK-NEXT:    add x0, x8, #4
71 ; CHECK-NEXT:    ret
73 ; GISEL-LABEL: freeze_ptr:
74 ; GISEL:       // %bb.0:
75 ; GISEL-NEXT:    add x0, x8, #4
76 ; GISEL-NEXT:    ret
77   %y1 = freeze ptr undef
78   %t1 = getelementptr i8, ptr %y1, i64 4
79   ret ptr %t1
82 define i32 @freeze_struct() {
83 ; CHECK-LABEL: freeze_struct:
84 ; CHECK:       // %bb.0:
85 ; CHECK-NEXT:    add w0, w8, w8
86 ; CHECK-NEXT:    ret
88 ; GISEL-LABEL: freeze_struct:
89 ; GISEL:       // %bb.0:
90 ; GISEL-NEXT:    add w0, w8, w8
91 ; GISEL-NEXT:    ret
92   %y1 = freeze %struct.T undef
93   %v1 = extractvalue %struct.T %y1, 0
94   %v2 = extractvalue %struct.T %y1, 1
95   %t1 = add i32 %v1, %v2
96   ret i32 %t1
99 define i32 @freeze_anonstruct() {
100 ; CHECK-LABEL: freeze_anonstruct:
101 ; CHECK:       // %bb.0:
102 ; CHECK-NEXT:    add w0, w8, w8
103 ; CHECK-NEXT:    ret
105 ; GISEL-LABEL: freeze_anonstruct:
106 ; GISEL:       // %bb.0:
107 ; GISEL-NEXT:    add w0, w8, w8
108 ; GISEL-NEXT:    ret
109   %y1 = freeze {i32, i32} undef
110   %v1 = extractvalue {i32, i32} %y1, 0
111   %v2 = extractvalue {i32, i32} %y1, 1
112   %t1 = add i32 %v1, %v2
113   ret i32 %t1
116 define i32 @freeze_anonstruct2() {
117 ; CHECK-LABEL: freeze_anonstruct2:
118 ; CHECK:       // %bb.0:
119 ; CHECK-NEXT:    add w0, w8, w8, uxth
120 ; CHECK-NEXT:    ret
122 ; GISEL-LABEL: freeze_anonstruct2:
123 ; GISEL:       // %bb.0:
124 ; GISEL-NEXT:    add w0, w8, w8, uxth
125 ; GISEL-NEXT:    ret
126   %y1 = freeze {i32, i16} undef
127   %v1 = extractvalue {i32, i16} %y1, 0
128   %v2 = extractvalue {i32, i16} %y1, 1
129   %z2 = zext i16 %v2 to i32
130   %t1 = add i32 %v1, %z2
131   ret i32 %t1
134 define i64 @freeze_array() {
135 ; CHECK-LABEL: freeze_array:
136 ; CHECK:       // %bb.0:
137 ; CHECK-NEXT:    add x0, x8, x8
138 ; CHECK-NEXT:    ret
140 ; GISEL-LABEL: freeze_array:
141 ; GISEL:       // %bb.0:
142 ; GISEL-NEXT:    add x0, x8, x8
143 ; GISEL-NEXT:    ret
144   %y1 = freeze [2 x i64] undef
145   %v1 = extractvalue [2 x i64] %y1, 0
146   %v2 = extractvalue [2 x i64] %y1, 1
147   %t1 = add i64 %v1, %v2
148   ret i64 %t1