xref: /llvm-project/llvm/test/CodeGen/X86/GlobalISel/legalize-freeze.mir (revision 24f49deacfb51347a1c7072a5015a654e66d01d2)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
2# RUN: llc -verify-machineinstrs -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s
3
4# test freeze
5
6...
7---
8name:            test_freezep0
9body:             |
10  bb.1:
11    ; CHECK-LABEL: name: test_freezep0
12    ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF
13    ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(p0) = G_FREEZE [[DEF]]
14    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY [[FREEZE]](p0)
15    ; CHECK-NEXT: RET 0, implicit [[COPY]](p0)
16    %0:_(p0) = IMPLICIT_DEF
17    %1:_(p0) = G_FREEZE %0
18    %2:_(p0) = COPY %1(p0)
19    RET 0, implicit %2
20
21...
22---
23name:            test_freeze64
24body:             |
25  bb.1:
26    ; CHECK-LABEL: name: test_freeze64
27    ; CHECK: [[DEF:%[0-9]+]]:_(s64) = IMPLICIT_DEF
28    ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s64) = G_FREEZE [[DEF]]
29    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY [[FREEZE]](s64)
30    ; CHECK-NEXT: RET 0, implicit [[COPY]](s64)
31    %0:_(s64) = IMPLICIT_DEF
32    %1:_(s64) = G_FREEZE %0
33    %2:_(s64) = COPY %1(s64)
34    RET 0, implicit %2
35
36...
37---
38name:            test_freeze48
39body:             |
40  bb.1:
41    ; CHECK-LABEL: name: test_freeze48
42    ; CHECK: [[DEF:%[0-9]+]]:_(s48) = IMPLICIT_DEF
43    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[DEF]](s48)
44    ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s64) = G_FREEZE [[ANYEXT]]
45    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s48) = G_TRUNC [[FREEZE]](s64)
46    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s48) = COPY [[TRUNC]](s48)
47    ; CHECK-NEXT: RET 0, implicit [[COPY]](s48)
48    %0:_(s48) = IMPLICIT_DEF
49    %1:_(s48) = G_FREEZE %0
50    %2:_(s48) = COPY %1(s48)
51    RET 0, implicit %2
52
53...
54---
55name:            test_freeze32
56body:             |
57  bb.1:
58    ; CHECK-LABEL: name: test_freeze32
59    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = IMPLICIT_DEF
60    ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s32) = G_FREEZE [[DEF]]
61    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[FREEZE]](s32)
62    ; CHECK-NEXT: RET 0, implicit [[COPY]](s32)
63    %0:_(s32) = IMPLICIT_DEF
64    %1:_(s32) = G_FREEZE %0
65    %2:_(s32) = COPY %1(s32)
66    RET 0, implicit %2
67
68...
69---
70name:            test_freeze16
71body:             |
72  bb.1:
73    ; CHECK-LABEL: name: test_freeze16
74    ; CHECK: [[DEF:%[0-9]+]]:_(s16) = IMPLICIT_DEF
75    ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s16) = G_FREEZE [[DEF]]
76    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY [[FREEZE]](s16)
77    ; CHECK-NEXT: RET 0, implicit [[COPY]](s16)
78    %0:_(s16) = IMPLICIT_DEF
79    %1:_(s16) = G_FREEZE %0
80    %2:_(s16) = COPY %1(s16)
81    RET 0, implicit %2
82
83...
84---
85name:            test_freeze8
86body:             |
87  bb.1:
88    ; CHECK-LABEL: name: test_freeze8
89    ; CHECK: [[DEF:%[0-9]+]]:_(s8) = IMPLICIT_DEF
90    ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s8) = G_FREEZE [[DEF]]
91    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY [[FREEZE]](s8)
92    ; CHECK-NEXT: RET 0, implicit [[COPY]](s8)
93    %0:_(s8) = IMPLICIT_DEF
94    %1:_(s8) = G_FREEZE %0
95    %2:_(s8) = COPY %1(s8)
96    RET 0, implicit %2
97
98...
99