1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-linux -mattr=+sse4.1 -asm-verbose=0 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-win32 -mattr=+sse4.1 -asm-verbose=0 | FileCheck %s -check-prefix=WIN64 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test1(<4 x i32> %A, <4 x i32> %B) nounwind { 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1: 6*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pmulld 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; WIN64-LABEL: test1: 9*9880d681SAndroid Build Coastguard Worker; WIN64-NEXT: movdqa (%rcx), %xmm0 10*9880d681SAndroid Build Coastguard Worker; WIN64-NEXT: pmulld (%rdx), %xmm0 11*9880d681SAndroid Build Coastguard Worker %C = mul <4 x i32> %A, %B 12*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %C 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test1a(<4 x i32> %A, <4 x i32> *%Bp) nounwind { 16*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1a: 17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pmulld 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker; WIN64-LABEL: test1a: 20*9880d681SAndroid Build Coastguard Worker; WIN64-NEXT: movdqa (%rcx), %xmm0 21*9880d681SAndroid Build Coastguard Worker; WIN64-NEXT: pmulld (%rdx), %xmm0 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker %B = load <4 x i32>, <4 x i32>* %Bp 24*9880d681SAndroid Build Coastguard Worker %C = mul <4 x i32> %A, %B 25*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %C 26*9880d681SAndroid Build Coastguard Worker} 27