56 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s3 4define i128 @i64_sext_i128(i64 %a, i64 %b) {5; CHECK-LABEL: i64_sext_i128:6; CHECK: # %bb.0:7; CHECK-NEXT: movq %rdi, %rax8; CHECK-NEXT: imulq %rsi9; CHECK-NEXT: retq10 %aa = sext i64 %a to i12811 %bb = sext i64 %b to i12812 %cc = mul i128 %aa, %bb13 ret i128 %cc14}15define i128 @i64_zext_i128(i64 %a, i64 %b) {16; CHECK-LABEL: i64_zext_i128:17; CHECK: # %bb.0:18; CHECK-NEXT: movq %rdi, %rax19; CHECK-NEXT: mulq %rsi20; CHECK-NEXT: retq21 %aa = zext i64 %a to i12822 %bb = zext i64 %b to i12823 %cc = mul i128 %aa, %bb24 ret i128 %cc25}26define i128 @i64_zext_sext_i128(i64 %a, i64 %b) {27; CHECK-LABEL: i64_zext_sext_i128:28; CHECK: # %bb.0:29; CHECK-NEXT: movq %rdi, %rax30; CHECK-NEXT: mulq %rsi31; CHECK-NEXT: sarq $63, %rsi32; CHECK-NEXT: imulq %rdi, %rsi33; CHECK-NEXT: addq %rsi, %rdx34; CHECK-NEXT: retq35 %aa = zext i64 %a to i12836 %bb = sext i64 %b to i12837 %cc = mul i128 %aa, %bb38 ret i128 %cc39}40 41define i128 @i64_sext_zext_i128(i64 %a, i64 %b) {42; CHECK-LABEL: i64_sext_zext_i128:43; CHECK: # %bb.0:44; CHECK-NEXT: movq %rdi, %rax45; CHECK-NEXT: movq %rdi, %rcx46; CHECK-NEXT: sarq $63, %rcx47; CHECK-NEXT: mulq %rsi48; CHECK-NEXT: imulq %rsi, %rcx49; CHECK-NEXT: addq %rcx, %rdx50; CHECK-NEXT: retq51 %aa = sext i64 %a to i12852 %bb = zext i64 %b to i12853 %cc = mul i128 %aa, %bb54 ret i128 %cc55}56