• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -march=aarch64 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s
3---
4name:            narrow_sext_s128
5tracksRegLiveness: true
6body:             |
7  bb.1:
8    liveins: $x0, $x1
9
10    ; CHECK-LABEL: name: narrow_sext_s128
11    ; CHECK: liveins: $x0, $x1
12    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
13    ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1
14    ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63
15    ; CHECK: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY]], [[C]](s64)
16    ; CHECK: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[ASHR]](s64)
17    ; CHECK: G_STORE [[MV]](s128), [[COPY1]](p0) :: (store 16)
18    ; CHECK: RET_ReallyLR
19    %0:_(s64) = COPY $x0
20    %1:_(p0) = COPY $x1
21    %2:_(s128) = G_SEXT %0(s64)
22    G_STORE %2(s128), %1(p0) :: (store 16)
23    RET_ReallyLR
24
25...
26---
27name:            narrow_zext_s128
28tracksRegLiveness: true
29body:             |
30  bb.1:
31    liveins: $x0, $x1
32
33    ; CHECK-LABEL: name: narrow_zext_s128
34    ; CHECK: liveins: $x0, $x1
35    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
36    ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1
37    ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
38    ; CHECK: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[C]](s64)
39    ; CHECK: G_STORE [[MV]](s128), [[COPY1]](p0) :: (store 16)
40    ; CHECK: RET_ReallyLR
41    %0:_(s64) = COPY $x0
42    %1:_(p0) = COPY $x1
43    %2:_(s128) = G_ZEXT %0(s64)
44    G_STORE %2(s128), %1(p0) :: (store 16)
45    RET_ReallyLR
46
47...
48---
49name:            narrow_zext_s128_from_s32
50tracksRegLiveness: true
51body:             |
52  bb.1:
53    liveins: $w0, $x1
54
55    ; CHECK-LABEL: name: narrow_zext_s128_from_s32
56    ; CHECK: liveins: $w0, $x1
57    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
58    ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1
59    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
60    ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[C]](s32)
61    ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
62    ; CHECK: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[MV]](s64), [[C1]](s64)
63    ; CHECK: G_STORE [[MV1]](s128), [[COPY1]](p0) :: (store 16)
64    ; CHECK: RET_ReallyLR
65    %0:_(s32) = COPY $w0
66    %1:_(p0) = COPY $x1
67    %2:_(s128) = G_ZEXT %0(s32)
68    G_STORE %2(s128), %1(p0) :: (store 16)
69    RET_ReallyLR
70
71...
72---
73name:            narrow_zext_s192
74tracksRegLiveness: true
75body:             |
76  bb.1:
77    liveins: $x0, $x1
78
79    ; CHECK-LABEL: name: narrow_zext_s192
80    ; CHECK: liveins: $x0, $x1
81    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
82    ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1
83    ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
84    ; CHECK: G_STORE [[COPY]](s64), [[COPY1]](p0) :: (store 8)
85    ; CHECK: G_STORE [[C]](s64), [[COPY1]](p0) :: (store 8)
86    ; CHECK: G_STORE [[C]](s64), [[COPY1]](p0) :: (store 8)
87    ; CHECK: RET_ReallyLR
88    %0:_(s64) = COPY $x0
89    %1:_(p0) = COPY $x1
90    %2:_(s192) = G_ZEXT %0(s64)
91    %3:_(s64), %4:_(s64), %5:_(s64) = G_UNMERGE_VALUES %2(s192)
92    G_STORE %3, %1(p0) :: (store 8)
93    G_STORE %4, %1(p0) :: (store 8)
94    G_STORE %5, %1(p0) :: (store 8)
95    RET_ReallyLR
96
97...
98