@@ -44,3 +44,117 @@ body: |
44
44
PseudoRET implicit $x10
45
45
46
46
...
47
+ ---
48
+ name : anyext_16_i32
49
+ body : |
50
+ ; CHECK-LABEL: name: anyext_16_i32
51
+ ; CHECK: bb.0.entry:
52
+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
53
+ ; CHECK-NEXT: {{ $}}
54
+ ; CHECK-NEXT: bb.1:
55
+ ; CHECK-NEXT: liveins: $x10, $x11
56
+ ; CHECK-NEXT: {{ $}}
57
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
58
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
59
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
60
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[C]](s64)
61
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))
62
+ ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD]](s16)
63
+ ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
64
+ ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C1]]
65
+ ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s64), [[ANYEXT]], [[TRUNC]]
66
+ ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)
67
+ ; CHECK-NEXT: $x10 = COPY [[ANYEXT1]](s64)
68
+ ; CHECK-NEXT: PseudoRET implicit $x10
69
+ bb.0.entry:
70
+ bb.1:
71
+ liveins: $x10, $x11
72
+
73
+ %0:_(p0) = COPY $x10
74
+ %1:_(s64) = COPY $x11
75
+ %2:_(s1) = G_TRUNC %1(s64)
76
+ %3:_(s32) = G_CONSTANT i32 0
77
+ %4:_(s16) = G_LOAD %0(p0) :: (load (s16))
78
+ %5:_(s32) = G_ANYEXT %4(s16)
79
+ %6:_(s32) = G_SELECT %2(s1), %5, %3
80
+ %7:_(s64) = G_ANYEXT %6(s32)
81
+ $x10 = COPY %7(s64)
82
+ PseudoRET implicit $x10
83
+
84
+ ...
85
+ ---
86
+ name : sext_16_i32
87
+ body : |
88
+ ; CHECK-LABEL: name: sext_16_i32
89
+ ; CHECK: bb.0.entry:
90
+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
91
+ ; CHECK-NEXT: {{ $}}
92
+ ; CHECK-NEXT: bb.1:
93
+ ; CHECK-NEXT: liveins: $x10, $x11
94
+ ; CHECK-NEXT: {{ $}}
95
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
96
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
97
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
98
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[C]](s64)
99
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))
100
+ ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[LOAD]](s16)
101
+ ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
102
+ ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C1]]
103
+ ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s64), [[SEXT]], [[TRUNC]]
104
+ ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)
105
+ ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)
106
+ ; CHECK-NEXT: PseudoRET implicit $x10
107
+ bb.0.entry:
108
+ bb.1:
109
+ liveins: $x10, $x11
110
+
111
+ %0:_(p0) = COPY $x10
112
+ %1:_(s64) = COPY $x11
113
+ %2:_(s1) = G_TRUNC %1(s64)
114
+ %3:_(s32) = G_CONSTANT i32 0
115
+ %4:_(s16) = G_LOAD %0(p0) :: (load (s16))
116
+ %5:_(s32) = G_SEXT %4(s16)
117
+ %6:_(s32) = G_SELECT %2(s1), %5, %3
118
+ %7:_(s64) = G_ANYEXT %6(s32)
119
+ $x10 = COPY %7(s64)
120
+ PseudoRET implicit $x10
121
+
122
+ ...
123
+ ---
124
+ name : zext_16_i32
125
+ body : |
126
+ ; CHECK-LABEL: name: zext_16_i32
127
+ ; CHECK: bb.0.entry:
128
+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
129
+ ; CHECK-NEXT: {{ $}}
130
+ ; CHECK-NEXT: bb.1:
131
+ ; CHECK-NEXT: liveins: $x10, $x11
132
+ ; CHECK-NEXT: {{ $}}
133
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
134
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
135
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
136
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[C]](s64)
137
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))
138
+ ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[LOAD]](s16)
139
+ ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
140
+ ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C1]]
141
+ ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s64), [[ZEXT]], [[TRUNC]]
142
+ ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)
143
+ ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)
144
+ ; CHECK-NEXT: PseudoRET implicit $x10
145
+ bb.0.entry:
146
+ bb.1:
147
+ liveins: $x10, $x11
148
+
149
+ %0:_(p0) = COPY $x10
150
+ %1:_(s64) = COPY $x11
151
+ %2:_(s1) = G_TRUNC %1(s64)
152
+ %3:_(s32) = G_CONSTANT i32 0
153
+ %4:_(s16) = G_LOAD %0(p0) :: (load (s16))
154
+ %5:_(s32) = G_ZEXT %4(s16)
155
+ %6:_(s32) = G_SELECT %2(s1), %5, %3
156
+ %7:_(s64) = G_ANYEXT %6(s32)
157
+ $x10 = COPY %7(s64)
158
+ PseudoRET implicit $x10
159
+
160
+ ...
0 commit comments