• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# RUN: llc -mtriple=arm64-apple-ios11.0.0 -o - -run-pass mir-canonicalizer %s | FileCheck %s
2# These Idempotent instructions are sorted alphabetically (based on after the '=')
3# CHECK: %namedVReg4352:gpr64 = MOVi64imm 4617315517961601024
4# CHECK: %namedVReg4353:gpr32 = MOVi32imm 408
5# CHECK: %namedVReg4354:gpr32 = MOVi32imm 408
6# CHECK: %namedVReg4355:gpr64all = IMPLICIT_DEF
7# CHECK: %namedVReg4356:fpr64 = FMOVDi 20
8# CHECK: %namedVReg4357:fpr64 = FMOVDi 112
9...
10---
11name: Proc8
12stack:
13  - { id: 0, type: default, offset: 0, size: 4, alignment: 4,
14      stack-id: 0, callee-saved-register: '', callee-saved-restored: true,
15      local-offset: -4, debug-info-variable: '', debug-info-expression: '',
16      debug-info-location: '' }
17  - { id: 1, type: default, offset: 0, size: 8, alignment: 8,
18      stack-id: 0, callee-saved-register: '', callee-saved-restored: true,
19      local-offset: -16, debug-info-variable: '', debug-info-expression: '',
20      debug-info-location: '' }
21  - { id: 2, type: default, offset: 0, size: 8, alignment: 8,
22      stack-id: 0, callee-saved-register: '', callee-saved-restored: true,
23      local-offset: -24, debug-info-variable: '', debug-info-expression: '',
24      debug-info-location: '' }
25  - { id: 3, type: default, offset: 0, size: 8, alignment: 8,
26      stack-id: 0, callee-saved-register: '', callee-saved-restored: true,
27      local-offset: -32, debug-info-variable: '', debug-info-expression: '',
28      debug-info-location: '' }
29  - { id: 4, type: default, offset: 0, size: 8, alignment: 8,
30      stack-id: 0, callee-saved-register: '', callee-saved-restored: true,
31      local-offset: -40, debug-info-variable: '', debug-info-expression: '',
32      debug-info-location: '' }
33  - { id: 5, type: default, offset: 0, size: 8, alignment: 8,
34      stack-id: 0, callee-saved-register: '', callee-saved-restored: true,
35      local-offset: -48, debug-info-variable: '', debug-info-expression: '',
36      debug-info-location: '' }
37  - { id: 6, type: default, offset: 0, size: 8, alignment: 8,
38      stack-id: 0, callee-saved-register: '', callee-saved-restored: true,
39      local-offset: -56, debug-info-variable: '', debug-info-expression: '',
40      debug-info-location: '' }
41constants:
42body: |
43  bb.0:
44    liveins: $x0, $x1, $d0, $d1
45
46    %3:fpr64 = COPY $d1
47    %2:fpr64 = COPY $d0
48    %1:gpr64 = COPY $x1
49    %0:gpr64common = COPY $x0
50    STRXui %0, %stack.1, 0 :: (store 8)
51    STRXui %1, %stack.2, 0 :: (store 8)
52    STRDui %2, %stack.3, 0 :: (store 8)
53    STRDui %3, %stack.4, 0 :: (store 8)
54
55    %4:fpr64 = FMOVDi 20
56    %5:fpr64 = FADDDrr %2, killed %4
57    STRDui %5, %stack.5, 0 :: (store 8)
58
59    %6:gpr32 = FCVTZSUWDr %5
60    STRDroW %3, %0, killed %6, 1, 1
61
62    %7:gpr64common = LDRXui %stack.1, 0 :: (dereferenceable load 8)
63    %8:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
64
65    %9:gpr32common = FCVTZSUWDr killed %8
66    %10:fpr64 = LDRDroW %7, %9, 1, 1
67
68    %11:gpr32common = ADDWri %9, 1, 0
69    STRDroW killed %10, %7, killed %11, 1, 1
70
71    %12:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
72    %13:gpr64common = LDRXui %stack.1, 0 :: (dereferenceable load 8)
73
74    %14:gpr32common = FCVTZSUWDr %12
75    %15:gpr32common = ADDWri killed %14, 30, 0
76    STRDroW %12, killed %13, killed %15, 1, 1
77
78    %16:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
79    STRDui killed %16, %stack.6, 0 :: (store 8)
80
81    %19:fpr64 = FMOVDi 112
82    %46:gpr32 = MOVi32imm 408
83    %43:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
84    %44:gpr64 = LDRXui %stack.2, 0 :: (dereferenceable load 8)
85
86    %45:gpr32 = FCVTZSUWDr %43
87    %47:gpr64common = SMADDLrrr killed %45, %46, killed %44
88    %48:fpr64 = LDRDui %stack.6, 0 :: (dereferenceable load 8)
89
90    %49:gpr32 = FCVTZSUWDr killed %48
91    STRDroW %43, killed %47, killed %49, 1, 1
92
93    %21:gpr64 = LDRXui %stack.2, 0 :: (dereferenceable load 8)
94    %22:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
95
96    %23:gpr32 = FCVTZSUWDr killed %22
97    %24:gpr32 = MOVi32imm 408
98    %25:gpr64common = SMADDLrrr %23, %24, killed %21
99    %26:gpr64sp = ADDXrx killed %25, %23, 51
100    %27:fpr64 = LDURDi %26, -8
101    %29:fpr64 = FADDDrr killed %27, %19
102    STURDi killed %29, %26, -8
103
104    %30:gpr64common = LDRXui %stack.1, 0 :: (dereferenceable load 8)
105    %31:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
106
107    %32:gpr32common = FCVTZSUWDr killed %31
108    %34:gpr64all = IMPLICIT_DEF
109    %33:gpr64 = INSERT_SUBREG %34, %32, %subreg.sub_32
110    %35:gpr64 = SBFMXri killed %33, 61, 31
111    %36:fpr64 = LDRDroX killed %30, %35, 0, 0
112    %37:gpr64 = LDRXui %stack.2, 0 :: (dereferenceable load 8)
113
114    %38:gpr32common = ADDWri %32, 20, 0
115    %39:gpr64common = SMADDLrrr killed %38, %24, killed %37
116    STRDroX killed %36, killed %39, %35, 0, 0
117
118    %40:gpr64 = MOVi64imm 4617315517961601024
119
120    %42:gpr32 = LDRWui %stack.0, 0 :: (dereferenceable load 8)
121    $w0 = COPY %42
122    RET_ReallyLR implicit $w0
123
124...
125