brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.2 KiB · 5c1937e Raw
481 lines · plain
1# RUN: llc -o - %s -mtriple=aarch64 -mcpu=cortex-a55 -lsr-preferred-addressing-mode=preindexed -stop-after=aarch64-ldst-opt | FileCheck %s2 3---4name:            1-strwpre-strwui-merge5alignment:       46tracksRegLiveness: true7liveins:8  - { reg: '$x0' }9  - { reg: '$w1' }10  - { reg: '$w2' }11frameInfo:12  maxAlignment:    113  maxCallFrameSize: 014machineFunctionInfo:15  hasRedZone:      false16body:             |17  bb.0.entry:18    liveins: $w1, $w2, $x019    ; CHECK-LABEL: name: 1-strwpre-strwui-merge20    ; CHECK: liveins: $w1, $w2, $x021    ; CHECK: early-clobber $x0 = STPWpre renamable $w1, renamable $w2, renamable $x0, 5 :: (store (s32))22    ; CHECK: RET undef $lr, implicit $x023    early-clobber renamable $x0 = STRWpre killed renamable $w1, killed renamable $x0, 20 :: (store (s32))24    STRWui killed renamable $w2, renamable $x0, 1 :: (store (s32))25    RET undef $lr, implicit $x026 27...28 29 30---31name:            2-strxpre-strxui-merge32alignment:       433tracksRegLiveness: true34liveins:35  - { reg: '$x0' }36  - { reg: '$x1' }37  - { reg: '$x2' }38frameInfo:39  maxAlignment:    140  maxCallFrameSize: 041machineFunctionInfo:42  hasRedZone:      false43body:             |44  bb.0.entry:45    liveins: $x0, $x1, $x246 47    ; CHECK-LABEL: name: 2-strxpre-strxui-merge48    ; CHECK: liveins: $x0, $x1, $x249    ; CHECK: early-clobber $x0 = STPXpre renamable $x1, renamable $x2, renamable $x0, 3 :: (store (s64))50    ; CHECK: RET undef $lr, implicit $x051    early-clobber renamable $x0 = STRXpre killed renamable $x1, killed renamable $x0, 24 :: (store (s64))52    STRXui killed renamable $x2, renamable $x0, 1 :: (store (s64))53    RET undef $lr, implicit $x054 55...56 57 58---59name:            3-strspre-strsui-merge60alignment:       461tracksRegLiveness: true62liveins:63  - { reg: '$x0' }64  - { reg: '$s0' }65  - { reg: '$s1' }66frameInfo:67  maxAlignment:    168  maxCallFrameSize: 069machineFunctionInfo:70  hasRedZone:      false71body:             |72  bb.0.entry:73    liveins: $s0, $s1, $x074    ; CHECK-LABEL: name: 3-strspre-strsui-merge75    ; CHECK: liveins: $s0, $s1, $x076    ; CHECK: early-clobber $x0 = STPSpre renamable $s0, renamable $s1, renamable $x0, 3 :: (store (s32))77    ; CHECK: RET undef $lr, implicit $x078    early-clobber renamable $x0 = STRSpre killed renamable $s0, killed renamable $x0, 12 :: (store (s32))79    STRSui killed renamable $s1, renamable $x0, 1 :: (store (s32))80    RET undef $lr, implicit $x081...82 83 84---85name:            4-strdpre-strdui-merge86alignment:       487tracksRegLiveness: true88liveins:89  - { reg: '$x0' }90  - { reg: '$d0' }91  - { reg: '$d1' }92frameInfo:93  maxAlignment:    194  maxCallFrameSize: 095machineFunctionInfo:96  hasRedZone:      false97body:             |98  bb.0.entry:99    liveins: $d0, $d1, $x0100 101    ; CHECK-LABEL: name: 4-strdpre-strdui-merge102    ; CHECK: liveins: $d0, $d1, $x0103    ; CHECK: early-clobber $x0 = STPDpre renamable $d0, renamable $d1, renamable $x0, 16 :: (store (s64))104    ; CHECK: RET undef $lr, implicit $x0105    early-clobber renamable $x0 = STRDpre killed renamable $d0, killed renamable $x0, 128 :: (store (s64))106    STRDui killed renamable $d1, renamable $x0, 1 :: (store (s64))107    RET undef $lr, implicit $x0108 109...110 111 112---113name:            5-strqpre-strqui-merge114alignment:       4115tracksRegLiveness: true116liveins:117  - { reg: '$x0' }118  - { reg: '$q0' }119  - { reg: '$q1' }120frameInfo:121  maxAlignment:    1122  maxCallFrameSize: 0123machineFunctionInfo:124  hasRedZone:      false125body:             |126  bb.0.entry:127    liveins: $q0, $q1, $x0128 129    ; CHECK-LABEL: name: 5-strqpre-strqui-merge130    ; CHECK: liveins: $q0, $q1, $x0131    ; CHECK: early-clobber $x0 = STPQpre renamable $q0, renamable $q1, renamable $x0, 3 :: (store (s128))132    ; CHECK: RET undef $lr, implicit $x0133    early-clobber renamable $x0 = STRQpre killed renamable $q0, killed renamable $x0, 48 :: (store (s128))134    STRQui killed renamable $q1, renamable $x0, 1 :: (store (s128))135    RET undef $lr, implicit $x0136 137...138 139 140---141name:            6-strqui-strqpre-no-merge142alignment:       4143tracksRegLiveness: true144liveins:145  - { reg: '$x0' }146  - { reg: '$q0' }147  - { reg: '$q1' }148frameInfo:149  maxAlignment:    1150  maxCallFrameSize: 0151machineFunctionInfo:152  hasRedZone:      false153body:             |154  bb.0.entry:155    liveins: $q0, $q1, $x0156    ; CHECK-LABEL: name: 6-strqui-strqpre-no-merge157    ; CHECK: liveins: $q0, $q1, $x0158    ; CHECK: STRQui renamable $q1, renamable $x0, 1 :: (store (s128))159    ; CHECK: early-clobber renamable $x0 = STRQpre renamable $q0, renamable $x0, 48, implicit $w0, implicit $w0_hi :: (store (s128))160    ; CHECK: RET undef $lr, implicit $x0161    STRQui killed renamable $q1, renamable $x0, 1 :: (store (s128))162    early-clobber renamable $x0 = STRQpre killed renamable $q0, killed renamable $x0, 48 :: (store (s128))163    RET undef $lr, implicit $x0164...165 166 167---168name:            7-strspre-strsui-max-offset-merge169alignment:       4170tracksRegLiveness: true171liveins:172  - { reg: '$x0' }173  - { reg: '$s0' }174  - { reg: '$s1' }175frameInfo:176  maxAlignment:    1177  maxCallFrameSize: 0178machineFunctionInfo:179  hasRedZone:      false180body:             |181  bb.0.entry:182    liveins: $s0, $s1, $x0183    ; CHECK-LABEL: name: 7-strspre-strsui-max-offset-merge184    ; CHECK: liveins: $s0, $s1, $x0185    ; CHECK: early-clobber $x0 = STPSpre renamable $s0, renamable $s1, renamable $x0, 63 :: (store (s32))186    ; CHECK: RET undef $lr, implicit $x0187    early-clobber renamable $x0 = STRSpre killed renamable $s0, killed renamable $x0, 252 :: (store (s32))188    STRSui killed renamable $s1, renamable $x0, 1 :: (store (s32))189    RET undef $lr, implicit $x0190...191 192 193---194name:            8-strspre-strsui-min-offset-merge195alignment:       4196tracksRegLiveness: true197liveins:198  - { reg: '$x0' }199  - { reg: '$s0' }200  - { reg: '$s1' }201frameInfo:202  maxAlignment:    1203  maxCallFrameSize: 0204machineFunctionInfo:205  hasRedZone:      false206body:             |207  bb.0.entry:208    liveins: $s0, $s1, $x0209    ; CHECK-LABEL: name: 8-strspre-strsui-min-offset-merge210    ; CHECK: liveins: $s0, $s1, $x0211    ; CHECK: early-clobber $x0 = STPSpre renamable $s0, renamable $s1, renamable $x0, -64 :: (store (s32))212    ; CHECK: RET undef $lr, implicit $x0213    early-clobber renamable $x0 = STRSpre killed renamable $s0, killed renamable $x0, -256 :: (store (s32))214    STRSui killed renamable $s1, renamable $x0, 1 :: (store (s32))215    RET undef $lr, implicit $x0216...217 218 219---220name:            9-strspre-strsui-mod-base-reg-no-merge221alignment:       4222tracksRegLiveness: true223liveins:224  - { reg: '$x0' }225  - { reg: '$x1' }226  - { reg: '$s0' }227  - { reg: '$s1' }228frameInfo:229  maxAlignment:    1230  maxCallFrameSize: 0231machineFunctionInfo:232  hasRedZone:      false233body:             |234  bb.0.entry:235    liveins: $s0, $s1, $x0, $x1236    ; CHECK-LABEL: name: 9-strspre-strsui-mod-base-reg-no-merge237    ; CHECK: liveins: $s0, $s1, $x0, $x1238    ; CHECK: dead early-clobber renamable $x0 = STRSpre renamable $s0, renamable $x0, 12, implicit $w0, implicit $w0_hi :: (store (s32))239    ; CHECK: renamable $x0 = LDRXui renamable $x1, 1 :: (load (s64))240    ; CHECK: STRSui renamable $s1, renamable $x0, 1 :: (store (s32))241    ; CHECK: RET undef $lr, implicit $x0242    early-clobber renamable $x0 = STRSpre killed renamable $s0, killed renamable $x0, 12 :: (store (s32))243    renamable $x0 = LDRXui renamable $x1, 1 :: (load (s64))244    STRSui killed renamable $s1, renamable $x0, 1 :: (store (s32))245    RET undef $lr, implicit $x0246...247 248 249---250name:            10-strspre-strsui-used-base-reg-no-merge251alignment:       4252tracksRegLiveness: true253liveins:254  - { reg: '$x0' }255  - { reg: '$x1' }256  - { reg: '$s0' }257  - { reg: '$s1' }258frameInfo:259  maxAlignment:    1260  maxCallFrameSize: 0261machineFunctionInfo:262  hasRedZone:      false263body:             |264  bb.0.entry:265    liveins: $s0, $s1, $x0, $x1266    ; CHECK-LABEL: name: 10-strspre-strsui-used-base-reg-no-merge267    ; CHECK: liveins: $s0, $s1, $x0, $x1268    ; CHECK: early-clobber renamable $x0 = STRSpre renamable $s0, renamable $x0, 12, implicit $w0, implicit $w0_hi :: (store (s32))269    ; CHECK: STRXui renamable $x1, renamable $x1, 1 :: (store (s32))270    ; CHECK: STRSui renamable $s1, renamable $x0, 1 :: (store (s32))271    ; CHECK: RET undef $lr, implicit $x0272    early-clobber renamable $x0 = STRSpre killed renamable $s0, killed renamable $x0, 12 :: (store (s32))273 274    STRXui killed renamable $x1, renamable $x1, 1 :: (store (s32))275 276    STRSui killed renamable $s1, renamable $x0, 1 :: (store (s32))277    RET undef $lr, implicit $x0278...279 280 281---282name:            11-strspre-strspre-no-merge283alignment:       4284tracksRegLiveness: true285liveins:286  - { reg: '$x0' }287  - { reg: '$s0' }288  - { reg: '$s1' }289frameInfo:290  maxAlignment:    1291  maxCallFrameSize: 0292machineFunctionInfo:293  hasRedZone:      false294body:             |295  bb.0.entry:296    liveins: $s0, $s1, $x0297    ; CHECK-LABEL: name: 11-strspre-strspre-no-merge298    ; CHECK: liveins: $s0, $s1, $x0299    ; CHECK: early-clobber renamable $x0 = STRSpre renamable $s0, renamable $x0, 12, implicit $w0, implicit $w0_hi :: (store (s32))300    ; CHECK: early-clobber renamable $x0 = STRSpre renamable $s1, renamable $x0, 16, implicit $w0, implicit $w0_hi :: (store (s32))301    ; CHECK: early-clobber renamable $x0 = STRSpre renamable $s0, renamable $x0, 4, implicit $w0, implicit $w0_hi :: (store (s32))302    ; CHECK: early-clobber renamable $x0 = STRSpre renamable $s1, renamable $x0, 12, implicit $w0, implicit $w0_hi :: (store (s32))303    ; CHECK: early-clobber renamable $x0 = STRSpre renamable $s0, renamable $x0, 4, implicit $w0, implicit $w0_hi :: (store (s32))304    ; CHECK: early-clobber renamable $x0 = STRSpre renamable $s1, renamable $x0, 4, implicit $w0, implicit $w0_hi :: (store (s32))305    ; CHECK: RET undef $lr, implicit $x0306    early-clobber renamable $x0 = STRSpre renamable $s0, killed renamable $x0, 12 :: (store (s32))307    early-clobber renamable $x0 = STRSpre renamable $s1, killed renamable $x0, 16 :: (store (s32))308    early-clobber renamable $x0 = STRSpre renamable $s0, killed renamable $x0, 4 :: (store (s32))309    early-clobber renamable $x0 = STRSpre renamable $s1, killed renamable $x0, 12 :: (store (s32))310    early-clobber renamable $x0 = STRSpre renamable $s0, killed renamable $x0, 4 :: (store (s32))311    early-clobber renamable $x0 = STRSpre renamable $s1, killed renamable $x0, 4 :: (store (s32))312    RET undef $lr, implicit $x0313...314 315 316---317name:            12-strspre-strsui-no-merge318alignment:       4319tracksRegLiveness: true320liveins:321  - { reg: '$x0' }322  - { reg: '$s0' }323  - { reg: '$s1' }324frameInfo:325  maxAlignment:    1326  maxCallFrameSize: 0327machineFunctionInfo:328  hasRedZone:      false329body:             |330  bb.0.entry:331 332    ; The offset of the second st is not equal to the333    ; size of the destination register,  and hence can’t be merged.334 335    liveins: $s0, $s1, $x0336    ; CHECK-LABEL: name: 12-strspre-strsui-no-merge337    ; CHECK: liveins: $s0, $s1, $x0338    ; CHECK: early-clobber renamable $x0 = STRSpre renamable $s0, renamable $x0, 12, implicit $w0, implicit $w0_hi :: (store (s32))339    ; CHECK: STRSui renamable $s1, renamable $x0, 2 :: (store (s32))340    ; CHECK: RET undef $lr, implicit $x0341    early-clobber renamable $x0 = STRSpre killed renamable $s0, killed renamable $x0, 12 :: (store (s32))342    STRSui killed renamable $s1, renamable $x0, 2 :: (store (s32))343    RET undef $lr, implicit $x0344...345 346 347---348name:            13-strqpre-sturqi-merge349alignment:       4350tracksRegLiveness: true351liveins:352  - { reg: '$x0' }353  - { reg: '$q0' }354  - { reg: '$q1' }355frameInfo:356  maxAlignment:    1357  maxCallFrameSize: 0358machineFunctionInfo:359  hasRedZone:      false360body:             |361  bb.0.entry:362    liveins: $q0, $q1, $x0363 364    ; CHECK-LABEL: name: 13-strqpre-sturqi-merge365    ; CHECK: liveins: $q0, $q1, $x0366    ; CHECK: early-clobber $x0 = STPQpre renamable $q0, renamable $q1, renamable $x0, 3 :: (store (s128))367    ; CHECK: RET undef $lr, implicit $x0368    early-clobber renamable $x0 = STRQpre killed renamable $q0, killed renamable $x0, 48 :: (store (s128))369    STURQi killed renamable $q1, renamable $x0, 16 :: (store (s128))370    RET undef $lr, implicit $x0371 372...373 374 375---376name:            14-strqpre-sturqi-no-merge377alignment:       4378tracksRegLiveness: true379liveins:380  - { reg: '$x0' }381  - { reg: '$q0' }382  - { reg: '$q1' }383frameInfo:384  maxAlignment:    1385  maxCallFrameSize: 0386machineFunctionInfo:387  hasRedZone:      false388body:             |389  bb.0.entry:390    liveins: $q0, $q1, $x0391    ; CHECK-LABEL: name: 14-strqpre-sturqi-no-merge392    ; CHECK: liveins: $q0, $q1, $x0393    ; CHECK: early-clobber renamable $x0 = STRQpre renamable $q0, renamable $x0, 48, implicit $w0, implicit $w0_hi :: (store (s128))394    ; CHECK: STURQi renamable $q1, renamable $x0, 1 :: (store (s128))395    ; CHECK: RET undef $lr, implicit $x0396    early-clobber renamable $x0 = STRQpre killed renamable $q0, killed renamable $x0, 48 :: (store (s128))397    STURQi killed renamable $q1, renamable $x0, 1 :: (store (s128))398    RET undef $lr, implicit $x0399...400 401 402---403name:            15-strspre-strsui-unaligned-no-merge404alignment:       4405tracksRegLiveness: true406liveins:407  - { reg: '$x0' }408  - { reg: '$s0' }409  - { reg: '$s1' }410frameInfo:411  maxAlignment:    1412  maxCallFrameSize: 0413machineFunctionInfo:414  hasRedZone:      false415body:             |416  bb.0.entry:417    liveins: $s0, $s1, $x0418    ; CHECK-LABEL: name: 15-strspre-strsui-unaligned-no-merge419    ; CHECK: liveins: $s0, $s1, $x0420    ; CHECK: early-clobber renamable $x0 = STRSpre renamable $s0, renamable $x0, 251, implicit $w0, implicit $w0_hi :: (store (s32))421    ; CHECK: STRSui renamable $s1, renamable $x0, 1 :: (store (s32))422    ; CHECK: RET undef $lr, implicit $x0423    early-clobber renamable $x0 = STRSpre killed renamable $s0, killed renamable $x0, 251 :: (store (s32))424    STRSui killed renamable $s1, renamable $x0, 1 :: (store (s32))425    RET undef $lr, implicit $x0426...427 428---429name:            16-strxpre-strxui-same-reg-no-merge430alignment:       4431tracksRegLiveness: true432liveins:433  - { reg: '$x0' }434  - { reg: '$x1' }435  - { reg: '$x2' }436frameInfo:437  maxAlignment:    1438  maxCallFrameSize: 0439machineFunctionInfo:440  hasRedZone:      false441body:             |442  bb.0.entry:443    liveins: $x0, $x1, $x2444    ; CHECK-LABEL: name: 16-strxpre-strxui-same-reg-no-merge445    ; CHECK: liveins: $x0, $x1, $x2446    ; CHECK: early-clobber renamable $x0 = STRXpre renamable $x1, renamable $x0, 24, implicit $w0, implicit $w0_hi :: (store (s64))447    ; CHECK: STRXui renamable $x0, renamable $x0, 1 :: (store (s64))448    ; CHECK: RET undef $lr, implicit $x0449    early-clobber renamable $x0 = STRXpre killed renamable $x1, killed renamable $x0, 24 :: (store (s64))450    STRXui renamable $x0, renamable $x0, 1 :: (store (s64))451    RET undef $lr, implicit $x0452 453...454 455---456name:            17-strwpre-strwui-same-reg-no-merge457alignment:       4458tracksRegLiveness: true459liveins:460  - { reg: '$x0' }461  - { reg: '$x1' }462  - { reg: '$x2' }463frameInfo:464  maxAlignment:    1465  maxCallFrameSize: 0466machineFunctionInfo:467  hasRedZone:      false468body:             |469  bb.0.entry:470    liveins: $x0, $x1, $x2471    ; CHECK-LABEL: name: 17-strwpre-strwui-same-reg-no-merge472    ; CHECK: liveins: $x0, $x1, $x2473    ; CHECK: early-clobber renamable $x0 = STRWpre renamable $w1, renamable $x0, 24, implicit $w0, implicit $w0_hi, implicit-def $w0 :: (store (s32))474    ; CHECK: STRWui renamable $w0, renamable $x0, 1 :: (store (s32))475    ; CHECK: RET undef $lr, implicit $x0476    early-clobber renamable $x0 = STRWpre killed renamable $w1, killed renamable $x0, 24 :: (store (s32))477    STRWui renamable $w0, renamable $x0, 1 :: (store (s32))478    RET undef $lr, implicit $x0479 480...481