143 lines · plain
1# RUN: llc -run-pass x86-fixup-bw-insts -mtriple=x86_64-- -o - %s | FileCheck %s2 3# Verify that we correctly deal with the flag edge cases when replacing4# copies by bigger copies, which is a pretty unusual transform.5 6--- |7 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"8 9 define i8 @test_movb_killed(i8 %a0) {10 ret i8 %a011 }12 13 define i8 @test_movb_impuse(i8 %a0) {14 ret i8 %a015 }16 17 define i8 @test_movb_impdef_gr64(i8 %a0) {18 ret i8 %a019 }20 21 define i8 @test_movb_impdef_gr32(i8 %a0) {22 ret i8 %a023 }24 25 define i8 @test_movb_impdef_gr16(i8 %a0) {26 ret i8 %a027 }28 29 define i16 @test_movw_impdef_gr32(i16 %a0) {30 ret i16 %a031 }32 33 define i16 @test_movw_impdef_gr64(i16 %a0) {34 ret i16 %a035 }36 37...38 39---40name: test_movb_killed41tracksRegLiveness: true42liveins:43 - { reg: '$edi' }44body: |45 bb.0 (%ir-block.0):46 liveins: $edi47 48 ; CHECK: $eax = MOV32rr undef $edi, implicit $dil49 $al = MOV8rr killed $dil50 RET64 killed $al51 52...53 54---55name: test_movb_impuse56tracksRegLiveness: true57liveins:58 - { reg: '$edi' }59body: |60 bb.0 (%ir-block.0):61 liveins: $edi62 63 ; CHECK: $eax = MOV32rr undef $edi, implicit $dil64 $al = MOV8rr $dil, implicit $edi65 RET64 killed $al66 67...68 69---70name: test_movb_impdef_gr6471tracksRegLiveness: true72liveins:73 - { reg: '$edi' }74body: |75 bb.0 (%ir-block.0):76 liveins: $edi77 78 ; CHECK: $eax = MOV32rr undef $edi, implicit $dil, implicit-def $rax79 $al = MOV8rr $dil, implicit-def $rax80 RET64 killed $al81 82...83 84---85name: test_movb_impdef_gr3286tracksRegLiveness: true87liveins:88 - { reg: '$edi' }89body: |90 bb.0 (%ir-block.0):91 liveins: $edi92 93 ; CHECK: $eax = MOV32rr undef $edi, implicit $dil94 $al = MOV8rr $dil, implicit-def $eax95 RET64 killed $al96 97...98 99---100name: test_movb_impdef_gr16101tracksRegLiveness: true102liveins:103 - { reg: '$edi' }104body: |105 bb.0 (%ir-block.0):106 liveins: $edi107 108 ; CHECK: $eax = MOV32rr undef $edi, implicit $dil109 $al = MOV8rr $dil, implicit-def $ax110 RET64 killed $al111 112...113 114---115name: test_movw_impdef_gr32116tracksRegLiveness: true117liveins:118 - { reg: '$edi' }119body: |120 bb.0 (%ir-block.0):121 liveins: $edi122 123 ; CHECK: $eax = MOV32rr undef $edi, implicit $di124 $ax = MOV16rr $di, implicit-def $eax125 RET64 killed $ax126 127...128 129---130name: test_movw_impdef_gr64131tracksRegLiveness: true132liveins:133 - { reg: '$edi' }134body: |135 bb.0 (%ir-block.0):136 liveins: $edi137 138 ; CHECK: $eax = MOV32rr undef $edi, implicit $di, implicit-def $rax139 $ax = MOV16rr $di, implicit-def $rax140 RET64 killed $ax141 142...143