72 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s3 4define i32 @test_scalar(i32 %x) {5; CHECK-LABEL: test_scalar:6; CHECK: # %bb.0:7; CHECK-NEXT: # kill: def $edi killed $edi def $rdi8; CHECK-NEXT: leal (,%rdi,4), %eax9; CHECK-NEXT: retq10 %mul = mul i32 %x, 311 %add = add i32 %mul, %x12 ret i32 %add13}14 15define i32 @test_scalar_commuted(i32 %x) {16; CHECK-LABEL: test_scalar_commuted:17; CHECK: # %bb.0:18; CHECK-NEXT: # kill: def $edi killed $edi def $rdi19; CHECK-NEXT: leal (,%rdi,4), %eax20; CHECK-NEXT: retq21 %mul = mul i32 %x, 322 %add = add i32 %x, %mul23 ret i32 %add24}25 26define <4 x i32> @test_vector(<4 x i32> %x) {27; CHECK-LABEL: test_vector:28; CHECK: # %bb.0:29; CHECK-NEXT: pslld $2, %xmm030; CHECK-NEXT: retq31 %mul = mul <4 x i32> %x, <i32 3, i32 3, i32 3, i32 3>32 %add = add <4 x i32> %mul, %x33 ret <4 x i32> %add34}35 36define ptr @test_ptr(ptr %p) {37; CHECK-LABEL: test_ptr:38; CHECK: # %bb.0:39; CHECK-NEXT: leaq (,%rdi,4), %rax40; CHECK-NEXT: retq41 %addr = ptrtoint ptr %p to i6442 %mul = mul i64 %addr, 343 %res = getelementptr i8, ptr %p, i64 %mul44 ret ptr %res45}46 47define i32 @test_extra_use(i32 %x, ptr %p) {48; CHECK-LABEL: test_extra_use:49; CHECK: # %bb.0:50; CHECK-NEXT: # kill: def $edi killed $edi def $rdi51; CHECK-NEXT: leal (%rdi,%rdi,2), %eax52; CHECK-NEXT: movl %eax, (%rsi)53; CHECK-NEXT: addl %edi, %eax54; CHECK-NEXT: retq55 %mul = mul i32 %x, 356 store i32 %mul, ptr %p57 %add = add i32 %mul, %x58 ret i32 %add59}60 61define i32 @test_different_operand(i32 %x, i32 %y) {62; CHECK-LABEL: test_different_operand:63; CHECK: # %bb.0:64; CHECK-NEXT: # kill: def $edi killed $edi def $rdi65; CHECK-NEXT: leal (%rdi,%rdi,2), %eax66; CHECK-NEXT: addl %esi, %eax67; CHECK-NEXT: retq68 %mul = mul i32 %x, 369 %add = add i32 %mul, %y70 ret i32 %add71}72