[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / CodeGen / MIR / AArch64 / mirCanonIdempotent.mir
blob2d4c9f5f8fbe2ee5b5b32a38a80f755ac6b4640b
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 ---
11 name: Proc8
12 stack:
13   - { id: 0, type: default, offset: 0, size: 4, alignment: 4,
14       stack-id: default, 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: default, 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: default, 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: default, 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: default, 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: default, 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: default, callee-saved-register: '', callee-saved-restored: true,
39       local-offset: -56, debug-info-variable: '', debug-info-expression: '',
40       debug-info-location: '' }
41 constants:
42 body: |
43   bb.0:
44     liveins: $x0, $x1, $d0, $d1
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)
55     %4:fpr64 = FMOVDi 20
56     %5:fpr64 = FADDDrr %2, killed %4
57     STRDui %5, %stack.5, 0 :: (store 8)
59     %6:gpr32 = FCVTZSUWDr %5
60     STRDroW %3, %0, killed %6, 1, 1
62     %7:gpr64common = LDRXui %stack.1, 0 :: (dereferenceable load 8)
63     %8:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
65     %9:gpr32common = FCVTZSUWDr killed %8
66     %10:fpr64 = LDRDroW %7, %9, 1, 1
68     %11:gpr32common = ADDWri %9, 1, 0
69     STRDroW killed %10, %7, killed %11, 1, 1
71     %12:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
72     %13:gpr64common = LDRXui %stack.1, 0 :: (dereferenceable load 8)
74     %14:gpr32common = FCVTZSUWDr %12
75     %15:gpr32common = ADDWri killed %14, 30, 0
76     STRDroW %12, killed %13, killed %15, 1, 1
78     %16:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
79     STRDui killed %16, %stack.6, 0 :: (store 8)
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)
86     %45:gpr32 = FCVTZSUWDr %43
87     %47:gpr64common = SMADDLrrr killed %45, %46, killed %44
88     %48:fpr64 = LDRDui %stack.6, 0 :: (dereferenceable load 8)
90     %49:gpr32 = FCVTZSUWDr killed %48
91     STRDroW %43, killed %47, killed %49, 1, 1
93     %21:gpr64 = LDRXui %stack.2, 0 :: (dereferenceable load 8)
94     %22:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
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
104     %30:gpr64common = LDRXui %stack.1, 0 :: (dereferenceable load 8)
105     %31:fpr64 = LDRDui %stack.5, 0 :: (dereferenceable load 8)
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)
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
118     %40:gpr64 = MOVi64imm 4617315517961601024
120     %42:gpr32 = LDRWui %stack.0, 0 :: (dereferenceable load 8)
121     $w0 = COPY %42
122     RET_ReallyLR implicit $w0