1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=x86_64-pc-linux < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=x86_64-pc-linux-gnux32 < %s | FileCheck -check-prefix=X32ABI %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; %in is kept in %esi for both ABIs. But the pointer will be passed in %edi 5*9880d681SAndroid Build Coastguard Worker; for x32, not %rdi 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker; CHECK: movl %esi, (%rdi) 8*9880d681SAndroid Build Coastguard Worker; X32ABI: movl %esi, (%edi) 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32* nocapture %out, i32 %in) nounwind { 11*9880d681SAndroid Build Coastguard Workerentry: 12*9880d681SAndroid Build Coastguard Worker store i32 %in, i32* %out, align 4 13*9880d681SAndroid Build Coastguard Worker ret void 14*9880d681SAndroid Build Coastguard Worker} 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker; CHECK: bar 17*9880d681SAndroid Build Coastguard Worker; CHECK: movl (%rsi), %eax 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker; Similarly here, but for loading 20*9880d681SAndroid Build Coastguard Worker; X32ABI: bar 21*9880d681SAndroid Build Coastguard Worker; X32ABI: movl (%esi), %eax 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine void @bar(i32* nocapture %pOut, i32* nocapture %pIn) nounwind { 24*9880d681SAndroid Build Coastguard Workerentry: 25*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %pIn, align 4 26*9880d681SAndroid Build Coastguard Worker store i32 %0, i32* %pOut, align 4 27*9880d681SAndroid Build Coastguard Worker ret void 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30