# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py # RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown -stop-after \ # RUN: ppc-pre-emit-peephole %s -o - | FileCheck %s --- name: testFoldRLWINM tracksRegLiveness: true body: | bb.0.entry: liveins: $r3 ; CHECK-LABEL: name: testFoldRLWINM ; CHECK: liveins: $r3 ; CHECK: renamable $r3 = RLWINM killed renamable $r3, 14, 0, 12, implicit-def $x3 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $x3 $r3 = RLWINM killed $r3, 27, 5, 31 dead renamable $r3 = RLWINM killed renamable $r3, 19, 0, 12, implicit-def $x3 BLR8 implicit $lr8, implicit $rm, implicit killed $x3 ... --- name: testFoldRLWINMSrcFullMask1 tracksRegLiveness: true body: | bb.0.entry: liveins: $r3 ; CHECK-LABEL: name: testFoldRLWINMSrcFullMask1 ; CHECK: liveins: $r3 ; CHECK: renamable $r3 = RLWINM killed renamable $r3, 14, 0, 12, implicit-def $x3 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $x3 $r3 = RLWINM killed $r3, 27, 0, 31 dead renamable $r3 = RLWINM killed renamable $r3, 19, 0, 12, implicit-def $x3 BLR8 implicit $lr8, implicit $rm, implicit killed $x3 ... --- name: testFoldRLWINMSrcFullMask2 tracksRegLiveness: true body: | bb.0.entry: liveins: $r2, $r3 ; CHECK-LABEL: name: testFoldRLWINMSrcFullMask2 ; CHECK: liveins: $r2, $r3 ; CHECK: renamable $r3 = RLWINM $r2, 14, 10, 1, implicit-def $x3 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $x3 $r3 = RLWINM killed $r2, 27, 10, 9 dead renamable $r3 = RLWINM killed renamable $r3, 19, 10, 1, implicit-def $x3 BLR8 implicit $lr8, implicit $rm, implicit killed $x3 ... --- name: testFoldRLWINMSrcWrapped tracksRegLiveness: true body: | bb.0.entry: liveins: $r3 ; CHECK-LABEL: name: testFoldRLWINMSrcWrapped ; CHECK: liveins: $r3 ; CHECK: renamable $r3 = RLWINM killed renamable $r3, 14, 11, 12, implicit-def $x3 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $x3 $r3 = RLWINM killed $r3, 27, 30, 10 dead renamable $r3 = RLWINM killed renamable $r3, 19, 0, 12, implicit-def $x3 BLR8 implicit $lr8, implicit $rm, implicit killed $x3 ... --- name: testFoldRLWINMUserWrapped tracksRegLiveness: true body: | bb.0.entry: liveins: $r3 ; CHECK-LABEL: name: testFoldRLWINMUserWrapped ; CHECK: liveins: $r3 ; CHECK: $r3 = RLWINM killed $r3, 10, 5, 31 ; CHECK: renamable $r3 = RLWINM killed renamable $r3, 10, 30, 5, implicit-def $x3 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $x3 $r3 = RLWINM killed $r3, 10, 5, 31 dead renamable $r3 = RLWINM killed renamable $r3, 10, 30, 5, implicit-def $x3 BLR8 implicit $lr8, implicit $rm, implicit killed $x3 ... --- name: testFoldRLWINMResultWrapped tracksRegLiveness: true body: | bb.0.entry: liveins: $r3 ; CHECK-LABEL: name: testFoldRLWINMResultWrapped ; CHECK: liveins: $r3 ; CHECK: $r3 = RLWINM killed $r3, 10, 20, 10 ; CHECK: renamable $r3 = RLWINM killed renamable $r3, 10, 0, 31, implicit-def $x3 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $x3 $r3 = RLWINM killed $r3, 10, 20, 10 dead renamable $r3 = RLWINM killed renamable $r3, 10, 0, 31, implicit-def $x3 BLR8 implicit $lr8, implicit $rm, implicit killed $x3 ... --- name: testFoldRLWINMToZero tracksRegLiveness: true body: | bb.0.entry: liveins: $r3 ; CHECK-LABEL: name: testFoldRLWINMToZero ; CHECK: liveins: $r3 ; CHECK: renamable $r3 = LI 0, implicit-def $x3 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $x3 $r3 = RLWINM killed $r3, 27, 5, 10 dead renamable $r3 = RLWINM killed renamable $r3, 8, 5, 10, implicit-def $x3 BLR8 implicit $lr8, implicit $rm, implicit killed $x3 ... --- name: testFoldRLWINM_recToZero tracksRegLiveness: true body: | bb.0.entry: liveins: $r3 ; CHECK-LABEL: name: testFoldRLWINM_recToZero ; CHECK: liveins: $r3 ; CHECK: dead renamable $r3 = ANDI_rec killed renamable $r3, 0, implicit-def $cr0 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $cr0 $r3 = RLWINM killed $r3, 27, 5, 10 dead renamable $r3 = RLWINM_rec killed renamable $r3, 8, 5, 10, implicit-def $cr0 BLR8 implicit $lr8, implicit $rm, implicit killed $cr0 ... --- name: testFoldRLWINMInvalidMask tracksRegLiveness: true body: | bb.0.entry: liveins: $r3 ; CHECK-LABEL: name: testFoldRLWINMInvalidMask ; CHECK: liveins: $r3 ; CHECK: $r3 = RLWINM killed $r3, 20, 5, 31 ; CHECK: renamable $r3 = RLWINM killed renamable $r3, 19, 10, 20, implicit-def $x3 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $x3 $r3 = RLWINM killed $r3, 20, 5, 31 dead renamable $r3 = RLWINM killed renamable $r3, 19, 10, 20, implicit-def $x3 BLR8 implicit $lr8, implicit $rm, implicit killed $x3 ... --- name: testFoldRLWINCanNotBeDeleted tracksRegLiveness: true body: | bb.0.entry: liveins: $r2, $r3 ; CHECK-LABEL: name: testFoldRLWINCanNotBeDeleted ; CHECK: liveins: $r2, $r3 ; CHECK: $r3 = RLWINM_rec $r2, 27, 5, 10, implicit-def dead $cr0 ; CHECK: dead renamable $r3 = ANDI_rec $r2, 0, implicit-def $cr0 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $cr0 $r3 = RLWINM_rec $r2, 27, 5, 10, implicit-def $cr0 dead renamable $r3 = RLWINM_rec killed renamable $r3, 8, 5, 10, implicit-def $cr0 BLR8 implicit $lr8, implicit $rm, implicit killed $cr0 ... --- name: testCanNotFoldRLWINM tracksRegLiveness: true body: | bb.0.entry: liveins: $r3 ; CHECK-LABEL: name: testCanNotFoldRLWINM ; CHECK: liveins: $r3 ; CHECK: $r3 = RLWINM_rec killed $r3, 27, 5, 10, implicit-def dead $cr0 ; CHECK: dead renamable $r3 = RLWINM_rec killed renamable $r3, 8, 5, 10, implicit-def $cr0 ; CHECK: BLR8 implicit $lr8, implicit $rm, implicit killed $cr0 $r3 = RLWINM_rec $r3, 27, 5, 10, implicit-def $cr0 dead renamable $r3 = RLWINM_rec killed renamable $r3, 8, 5, 10, implicit-def $cr0 BLR8 implicit $lr8, implicit $rm, implicit killed $cr0 ...