[Clang] prevent errors for deduction guides using deduced type aliases (#117450)
[llvm-project.git] / llvm / test / CodeGen / SystemZ / args-05.ll
blobb8e9d85bc2d748660c51de91f1427f88d5c70201
1 ; Test that we take advantage of signext and zeroext annotations.
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
5 ; Zero extension of something that is already zero-extended.
6 define void @f1(i32 zeroext %r2, ptr %r3) {
7 ; CHECK-LABEL: f1:
8 ; CHECK-NOT: %r2
9 ; CHECK: stg %r2, 0(%r3)
10 ; CHECK: br %r14
11   %conv = zext i32 %r2 to i64
12   store i64 %conv, ptr %r3
13   ret void
16 ; Sign extension of something that is already sign-extended.
17 define void @f2(i32 signext %r2, ptr %r3) {
18 ; CHECK-LABEL: f2:
19 ; CHECK-NOT: %r2
20 ; CHECK: stg %r2, 0(%r3)
21 ; CHECK: br %r14
22   %conv = sext i32 %r2 to i64
23   store i64 %conv, ptr %r3
24   ret void
27 ; Sign extension of something that is already zero-extended.
28 define void @f3(i32 zeroext %r2, ptr %r3) {
29 ; CHECK-LABEL: f3:
30 ; CHECK: lgfr [[REGISTER:%r[0-5]+]], %r2
31 ; CHECK: stg [[REGISTER]], 0(%r3)
32 ; CHECK: br %r14
33   %conv = sext i32 %r2 to i64
34   store i64 %conv, ptr %r3
35   ret void
38 ; Zero extension of something that is already sign-extended.
39 define void @f4(i32 signext %r2, ptr %r3) {
40 ; CHECK-LABEL: f4:
41 ; CHECK: llgfr [[REGISTER:%r[0-5]+]], %r2
42 ; CHECK: stg [[REGISTER]], 0(%r3)
43 ; CHECK: br %r14
44   %conv = zext i32 %r2 to i64
45   store i64 %conv, ptr %r3
46   ret void