86 lines · plain
1# RUN: llc -mtriple x86_64-- -verify-machineinstrs -run-pass branch-folder -o - %s | FileCheck %s2 3# Check the TCRETURNdi64cc optimization.4 5--- |6 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"7 8 define i64 @test(i64 %arg, ptr %arg1) optsize {9 %tmp = icmp ult i64 %arg, 10010 br i1 %tmp, label %1, label %411 12 %tmp3 = icmp ult i64 %arg, 1013 br i1 %tmp3, label %2, label %314 15 %tmp5 = tail call i64 @f1(ptr %arg1, i64 %arg)16 ret i64 %tmp517 18 %tmp7 = tail call i64 @f2(ptr %arg1, i64 %arg)19 ret i64 %tmp720 21 ret i64 12322 }23 24 declare i64 @f1(ptr, i64)25 declare i64 @f2(ptr, i64)26 27...28---29name: test30tracksRegLiveness: true31liveins:32 - { reg: '$rdi' }33 - { reg: '$rsi' }34body: |35 bb.0:36 successors: %bb.1, %bb.437 liveins: $rdi, $rsi38 39 $rax = COPY $rdi40 CMP64ri32 $rax, 99, implicit-def $eflags41 JCC_1 %bb.4, 7, implicit $eflags42 JMP_1 %bb.143 44 ; CHECK: bb.1:45 ; CHECK-NEXT: successors: %bb.2({{[^)]+}}){{$}}46 ; CHECK-NEXT: liveins: $rax, $rsi47 ; CHECK-NEXT: {{^ $}}48 ; CHECK-NEXT: $rdi = COPY $rsi49 ; CHECK-NEXT: $rsi = COPY $rax50 ; CHECK-NEXT: CMP64ri32 $rax, 9, implicit-def $eflags51 ; CHECK-NEXT: TCRETURNdi64cc @f1, 0, 6, csr_64, implicit $rsp, implicit $eflags, implicit $ssp, implicit $rsp, implicit $rdi, implicit $rsi, implicit $rdi, implicit-def $rdi, implicit $hsi, implicit-def $hsi, implicit $sih, implicit-def $sih, implicit $sil, implicit-def $sil, implicit $si, implicit-def $si, implicit $esi, implicit-def $esi, implicit $rsi, implicit-def $rsi, implicit $hdi, implicit-def $hdi, implicit $dih, implicit-def $dih, implicit $dil, implicit-def $dil, implicit $di, implicit-def $di, implicit $edi, implicit-def $edi52 53 bb.1:54 successors: %bb.2, %bb.355 liveins: $rax, $rsi56 57 CMP64ri32 $rax, 9, implicit-def $eflags58 JCC_1 %bb.3, 7, implicit $eflags59 JMP_1 %bb.260 61 bb.2:62 liveins: $rax, $rsi63 64 $rdi = COPY $rsi65 $rsi = COPY $rax66 67 TCRETURNdi64 @f1, 0, csr_64, implicit $rsp, implicit $rdi, implicit $rsi68 69 ; CHECK: bb.2:70 ; CHECK-NEXT: liveins: $rdi, $rsi71 ; CHECK-NEXT: {{^ $}}72 ; CHECK-NEXT: TCRETURNdi64 @f2, 0, csr_64, implicit $rsp, implicit $rdi, implicit $rsi73 74 bb.3:75 liveins: $rax, $rsi76 77 $rdi = COPY $rsi78 $rsi = COPY $rax79 TCRETURNdi64 @f2, 0, csr_64, implicit $rsp, implicit $rdi, implicit $rsi80 81 bb.4:82 dead $eax = MOV32ri 123, implicit-def $rax83 RET 0, $rax84 85...86