1 # RUN: llc -mtriple=arm64-apple-ios11.0.0 -o - -verify-machineinstrs -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-NEXT: %namedVReg4353:gpr32 = MOVi32imm 408
5 # CHECK-NEXT: %namedVReg4354:gpr32 = MOVi32imm 408
6 # CHECK-NEXT: %namedVReg4355:gpr64all = IMPLICIT_DEF
7 # CHECK-NEXT: %namedVReg4356:fpr64 = FMOVDi 20
8 # CHECK-NEXT: %namedVReg4357:fpr64 = FMOVDi 112
14 - { id: 0, type: default, offset: 0, size: 4, alignment: 4,
15 stack-id: default, callee-saved-register: '', callee-saved-restored: true,
16 local-offset: -4, debug-info-variable: '', debug-info-expression: '',
17 debug-info-location: '' }
18 - { id: 1, type: default, offset: 0, size: 8, alignment: 8,
19 stack-id: default, callee-saved-register: '', callee-saved-restored: true,
20 local-offset: -16, debug-info-variable: '', debug-info-expression: '',
21 debug-info-location: '' }
22 - { id: 2, type: default, offset: 0, size: 8, alignment: 8,
23 stack-id: default, callee-saved-register: '', callee-saved-restored: true,
24 local-offset: -24, debug-info-variable: '', debug-info-expression: '',
25 debug-info-location: '' }
26 - { id: 3, type: default, offset: 0, size: 8, alignment: 8,
27 stack-id: default, callee-saved-register: '', callee-saved-restored: true,
28 local-offset: -32, debug-info-variable: '', debug-info-expression: '',
29 debug-info-location: '' }
30 - { id: 4, type: default, offset: 0, size: 8, alignment: 8,
31 stack-id: default, callee-saved-register: '', callee-saved-restored: true,
32 local-offset: -40, debug-info-variable: '', debug-info-expression: '',
33 debug-info-location: '' }
34 - { id: 5, type: default, offset: 0, size: 8, alignment: 8,
35 stack-id: default, callee-saved-register: '', callee-saved-restored: true,
36 local-offset: -48, debug-info-variable: '', debug-info-expression: '',
37 debug-info-location: '' }
38 - { id: 6, type: default, offset: 0, size: 8, alignment: 8,
39 stack-id: default, callee-saved-register: '', callee-saved-restored: true,
40 local-offset: -56, debug-info-variable: '', debug-info-expression: '',
41 debug-info-location: '' }
45 liveins: $x0, $x1, $d0, $d1
50 %0:gpr64common = COPY $x0
51 STRXui %0, %stack.1, 0 :: (store 8)
52 STRXui %1, %stack.2, 0 :: (store 8)
53 STRDui %2, %stack.3, 0 :: (store 8)
54 STRDui %3, %stack.4, 0 :: (store 8)
57 %5:fpr64 = FADDDrr %2, killed %4
58 STRDui %5, %stack.5, 0 :: (store 8)
60 %6:gpr32 = FCVTZSUWDr %5
61 STRDroW %3, %0, killed %6, 1, 1
63 %7:gpr64common = LDRXui %stack.1, 0 :: (dereferenceable load 8)
64 %8:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
66 %9:gpr32common = FCVTZSUWDr killed %8
67 %10:fpr64 = LDRDroW %7, %9, 1, 1
69 %11:gpr32common = ADDWri %9, 1, 0
70 STRDroW killed %10, %7, killed %11, 1, 1
72 %12:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
73 %13:gpr64common = LDRXui %stack.1, 0 :: (dereferenceable load 8)
75 %14:gpr32common = FCVTZSUWDr %12
76 %15:gpr32common = ADDWri killed %14, 30, 0
77 STRDroW %12, killed %13, killed %15, 1, 1
79 %16:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
80 STRDui killed %16, %stack.6, 0 :: (store 8)
82 %19:fpr64 = FMOVDi 112
83 %46:gpr32 = MOVi32imm 408
84 %43:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
85 %44:gpr64 = LDRXui %stack.2, 0 :: (dereferenceable load 8)
87 %45:gpr32 = FCVTZSUWDr %43
88 %47:gpr64common = SMADDLrrr killed %45, %46, killed %44
89 %48:fpr64 = LDRDui %stack.6, 0 :: (dereferenceable load 8)
91 %49:gpr32 = FCVTZSUWDr killed %48
92 STRDroW %43, killed %47, killed %49, 1, 1
94 %21:gpr64 = LDRXui %stack.2, 0 :: (dereferenceable load 8)
95 %22:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
97 %23:gpr32 = FCVTZSUWDr killed %22
98 %24:gpr32 = MOVi32imm 408
99 %25:gpr64common = SMADDLrrr %23, %24, killed %21
100 %26:gpr64sp = ADDXrx killed %25, %23, 51
101 %27:fpr64 = LDURDi %26, -8
102 %29:fpr64 = FADDDrr killed %27, %19
103 STURDi killed %29, %26, -8
105 %30:gpr64common = LDRXui %stack.1, 0 :: (dereferenceable load 8)
106 %31:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
108 %32:gpr32common = FCVTZSUWDr killed %31
109 %34:gpr64all = IMPLICIT_DEF
110 %33:gpr64 = INSERT_SUBREG %34, %32, %subreg.sub_32
111 %35:gpr64 = SBFMXri killed %33, 61, 31
112 %36:fpr64 = LDRDroX killed %30, %35, 0, 0
113 %37:gpr64 = LDRXui %stack.2, 0 :: (dereferenceable load 8)
115 %38:gpr32common = ADDWri %32, 20, 0
116 %39:gpr64common = SMADDLrrr killed %38, %24, killed %37
117 STRDroX killed %36, killed %39, %35, 0, 0
119 %40:gpr64 = MOVi64imm 4617315517961601024
121 %42:gpr32 = LDRWui %stack.0, 0 :: (dereferenceable load 8)
123 RET_ReallyLR implicit $w0