80 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-linux-gnu -global-isel -verify-machineinstrs -global-isel-abort=2 < %s -o - | FileCheck %s --check-prefix=X643 4; TODO merge with ext.ll after i64 sext supported on 32bit platform5 6define i64 @test_zext_i1(i8 %a) {7; X64-LABEL: test_zext_i1:8; X64: # %bb.0:9; X64-NEXT: movl %edi, %eax10; X64-NEXT: andq $1, %rax11; X64-NEXT: retq12 %val = trunc i8 %a to i113 %r = zext i1 %val to i6414 ret i64 %r15}16 17define i64 @test_sext_i8(i8 %val) {18; X64-LABEL: test_sext_i8:19; X64: # %bb.0:20; X64-NEXT: movl %edi, %eax21; X64-NEXT: shlq $56, %rax22; X64-NEXT: sarq $56, %rax23; X64-NEXT: retq24 %r = sext i8 %val to i6425 ret i64 %r26}27 28define i64 @test_sext_i16(i16 %val) {29; X64-LABEL: test_sext_i16:30; X64: # %bb.0:31; X64-NEXT: movl %edi, %eax32; X64-NEXT: shlq $48, %rax33; X64-NEXT: sarq $48, %rax34; X64-NEXT: retq35 %r = sext i16 %val to i6436 ret i64 %r37}38 39define i64 @test_sext_i32(i32 %val) {40; X64-LABEL: test_sext_i32:41; X64: # %bb.0:42; X64-NEXT: movslq %edi, %rax43; X64-NEXT: retq44 %r = sext i32 %val to i6445 ret i64 %r46}47 48define i64 @test_zext_i8_to_i64(i8 %x, i8 %y) {49; X64-LABEL: test_zext_i8_to_i64:50; X64: # %bb.0:51; X64-NEXT: addb %dil, %sil52; X64-NEXT: movzbl %sil, %eax53; X64-NEXT: retq54 %a = add i8 %x, %y55 %b = zext i8 %a to i6456 ret i64 %b57}58 59define i64 @test_zext_i16_to_i64(i16 %x, i16 %y) {60; X64-LABEL: test_zext_i16_to_i64:61; X64: # %bb.0:62; X64-NEXT: addw %di, %si63; X64-NEXT: movzwl %si, %eax64; X64-NEXT: retq65 %a = add i16 %x, %y66 %b = zext i16 %a to i6467 ret i64 %b68}69 70define i64 @test_zext_i32_to_i64(i32 %x, i32 %y) {71; X64-LABEL: test_zext_i32_to_i64:72; X64: # %bb.0:73; X64-NEXT: addl %edi, %esi74; X64-NEXT: movl %esi, %eax75; X64-NEXT: retq76 %a = add i32 %x, %y77 %b = zext i32 %a to i6478 ret i64 %b79}80