brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · dba7666 Raw
178 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc %s -o - -mtriple=x86_64-- | FileCheck %s3@g = global i32 04@effect = global i32 05 6define void @switch_phi_const(i32 %x) {7; CHECK-LABEL: switch_phi_const:8; CHECK:       # %bb.0: # %bb09; CHECK-NEXT:    # kill: def $edi killed $edi def $rdi10; CHECK-NEXT:    leal -1(%rdi), %eax11; CHECK-NEXT:    cmpl $54, %eax12; CHECK-NEXT:    ja .LBB0_913; CHECK-NEXT:  # %bb.1: # %bb014; CHECK-NEXT:    jmpq *.LJTI0_0(,%rax,8)15; CHECK-NEXT:  .LBB0_3: # %case_716; CHECK-NEXT:    movq g@GOTPCREL(%rip), %rax17; CHECK-NEXT:    movl (%rax), %edi18; CHECK-NEXT:    movq effect@GOTPCREL(%rip), %rax19; CHECK-NEXT:    movl $7, (%rax)20; CHECK-NEXT:  .LBB0_4: # %case_1_loop21; CHECK-NEXT:    movq effect@GOTPCREL(%rip), %rax22; CHECK-NEXT:    movl $1, (%rax)23; CHECK-NEXT:  .LBB0_5: # %case_524; CHECK-NEXT:    movq effect@GOTPCREL(%rip), %rax25; CHECK-NEXT:    movl $5, (%rax)26; CHECK-NEXT:  .LBB0_6: # %case_1327; CHECK-NEXT:    movq effect@GOTPCREL(%rip), %rax28; CHECK-NEXT:    movl $13, (%rax)29; CHECK-NEXT:  .LBB0_7: # %case_4230; CHECK-NEXT:    movq effect@GOTPCREL(%rip), %rax31; CHECK-NEXT:    movl %edi, (%rax)32; CHECK-NEXT:    movl $55, %eax33; CHECK-NEXT:  .LBB0_8: # %case_5534; CHECK-NEXT:    movq effect@GOTPCREL(%rip), %rcx35; CHECK-NEXT:    movl %eax, (%rcx)36; CHECK-NEXT:  .LBB0_9: # %default37; CHECK-NEXT:    retq38; CHECK-NEXT:  .LBB0_2:39; CHECK-NEXT:    movl $42, %eax40; CHECK-NEXT:    jmp .LBB0_841bb0:42  switch i32 %x, label %default [43  i32 1, label %case_1_loop44  i32 5, label %case_545  i32 7, label %case_746  i32 13, label %case_1347  i32 42, label %case_4248  i32 55, label %case_5549  ]50 51case_1_loop:52  ; We should replace 1 with %x53  %x0 = phi i32 [ 1, %bb0 ], [ %x5, %case_7 ]54  store i32 1, ptr @effect, align 455  br label %case_556 57case_5:58  ; We should replace 5 with %x59  %x1 = phi i32 [ 5, %bb0 ], [ %x0, %case_1_loop ]60  store i32 5, ptr @effect, align 461  br label %case_1362 63case_13:64  ; We should replace 13 with %x65  %x2 = phi i32 [ 13, %bb0 ], [ %x1, %case_5 ]66  store i32 13, ptr @effect, align 467  br label %case_4268 69case_42:70  ; We should replace 42 with %x71  %x3 = phi i32 [ 42, %bb0 ], [ %x2, %case_13 ]72  store i32 %x3, ptr @effect, align 473  br label %case_5574 75case_55:76  ; We must not replace any of the PHI arguments!77  %x4 = phi i32 [ 42, %bb0 ], [ 55, %case_42 ]78  store i32 %x4, ptr @effect, align 479  br label %default80 81case_7:82  %x5 = load i32, ptr @g, align 483  store i32 7, ptr @effect, align 484  br label %case_1_loop85 86default:87  ret void88}89 90@g64 = global i64 091@effect64 = global i64 092 93define void @switch_trunc_phi_const(i32 %x) {94; CHECK-LABEL: switch_trunc_phi_const:95; CHECK:       # %bb.0: # %bb096; CHECK-NEXT:    movzbl %dil, %eax97; CHECK-NEXT:    leal -1(%rax), %ecx98; CHECK-NEXT:    cmpl $54, %ecx99; CHECK-NEXT:    ja .LBB1_9100; CHECK-NEXT:  # %bb.1: # %bb0101; CHECK-NEXT:    jmpq *.LJTI1_0(,%rcx,8)102; CHECK-NEXT:  .LBB1_2:103; CHECK-NEXT:    movl $3895, %eax # imm = 0xF37104; CHECK-NEXT:    jmp .LBB1_7105; CHECK-NEXT:  .LBB1_9: # %default106; CHECK-NEXT:    retq107; CHECK-NEXT:  .LBB1_3: # %case_1_loop108; CHECK-NEXT:    movq effect64@GOTPCREL(%rip), %rcx109; CHECK-NEXT:    movq $1, (%rcx)110; CHECK-NEXT:  .LBB1_4: # %case_5111; CHECK-NEXT:    movq effect64@GOTPCREL(%rip), %rcx112; CHECK-NEXT:    movq $5, (%rcx)113; CHECK-NEXT:  .LBB1_5: # %case_13114; CHECK-NEXT:    movq effect64@GOTPCREL(%rip), %rcx115; CHECK-NEXT:    movq $13, (%rcx)116; CHECK-NEXT:  .LBB1_6: # %case_42117; CHECK-NEXT:    movq effect64@GOTPCREL(%rip), %rcx118; CHECK-NEXT:    movq %rax, (%rcx)119; CHECK-NEXT:    movl $55, %eax120; CHECK-NEXT:  .LBB1_7: # %case_55121; CHECK-NEXT:    movq effect64@GOTPCREL(%rip), %rcx122; CHECK-NEXT:    movq %rax, (%rcx)123; CHECK-NEXT:  .LBB1_8: # %case_7124; CHECK-NEXT:    movq g64@GOTPCREL(%rip), %rax125; CHECK-NEXT:    movq (%rax), %rax126; CHECK-NEXT:    movq effect64@GOTPCREL(%rip), %rcx127; CHECK-NEXT:    movq $7, (%rcx)128; CHECK-NEXT:    jmp .LBB1_3129bb0:130  %x_trunc = trunc i32 %x to i8131  switch i8 %x_trunc, label %default [132  i8 1, label %case_1_loop133  i8 5, label %case_5134  i8 7, label %case_7135  i8 13, label %case_13136  i8 42, label %case_42137  i8 55, label %case_55138  ]139 140case_1_loop:141  ; We should replace 1 with %x142  %x0 = phi i64 [ 1, %bb0 ], [ %x5, %case_7 ]143  store i64 1, ptr @effect64, align 4144  br label %case_5145 146case_5:147  ; We should replace 5 with %x148  %x1 = phi i64 [ 5, %bb0 ], [ %x0, %case_1_loop ]149  store i64 5, ptr @effect64, align 4150  br label %case_13151 152case_13:153  ; We should replace 13 with %x154  %x2 = phi i64 [ 13, %bb0 ], [ %x1, %case_5 ]155  store i64 13, ptr @effect64, align 4156  br label %case_42157 158case_42:159  ; We should replace 42 with %x160  %x3 = phi i64 [ 42, %bb0 ], [ %x2, %case_13 ]161  store i64 %x3, ptr @effect64, align 4162  br label %case_55163 164case_55:165  ; We must not replace any of the PHI arguments! (3898 == 0xf00 + 55)166  %x4 = phi i64 [ 3895, %bb0 ], [ 55, %case_42 ]167  store i64 %x4, ptr @effect64, align 4168  br label %case_7169 170case_7:171  %x5 = load i64, ptr @g64, align 4172  store i64 7, ptr @effect64, align 4173  br label %case_1_loop174 175default:176  ret void177}178