xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/lea-4.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-linux-gnux32 | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-nacl | FileCheck %s
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @t1(i32 %on_off) nounwind {
7*9880d681SAndroid Build Coastguard Workerentry:
8*9880d681SAndroid Build Coastguard Worker  %0 = sub i32 %on_off, 1
9*9880d681SAndroid Build Coastguard Worker  %1 = mul i32 %0, 2
10*9880d681SAndroid Build Coastguard Worker  %2 = trunc i32 %1 to i16
11*9880d681SAndroid Build Coastguard Worker  %3 = zext i16 %2 to i32
12*9880d681SAndroid Build Coastguard Worker  %4 = trunc i32 %3 to i16
13*9880d681SAndroid Build Coastguard Worker; CHECK: lea
14*9880d681SAndroid Build Coastguard Worker  ret i16 %4
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerdefine i32 @t2(i32 %on_off) nounwind {
18*9880d681SAndroid Build Coastguard Workerentry:
19*9880d681SAndroid Build Coastguard Worker  %0 = sub i32 %on_off, 1
20*9880d681SAndroid Build Coastguard Worker  %1 = mul i32 %0, 2
21*9880d681SAndroid Build Coastguard Worker  %2 = and i32 %1, 65535
22*9880d681SAndroid Build Coastguard Worker; CHECK: lea
23*9880d681SAndroid Build Coastguard Worker  ret i32 %2
24*9880d681SAndroid Build Coastguard Worker}
25