1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=a2q | FileCheck %s 2*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64" 3*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-bgq-linux" 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @foo(<4 x double>* %a) { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker %r = load <4 x double>, <4 x double>* %a, align 32 8*9880d681SAndroid Build Coastguard Worker ret <4 x double> %r 9*9880d681SAndroid Build Coastguard Worker; CHECK: qvlfdx 10*9880d681SAndroid Build Coastguard Worker; CHECK: blr 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @bar(<4 x double>* %a) { 14*9880d681SAndroid Build Coastguard Workerentry: 15*9880d681SAndroid Build Coastguard Worker %r = load <4 x double>, <4 x double>* %a, align 8 16*9880d681SAndroid Build Coastguard Worker %b = getelementptr <4 x double>, <4 x double>* %a, i32 16 17*9880d681SAndroid Build Coastguard Worker %s = load <4 x double>, <4 x double>* %b, align 32 18*9880d681SAndroid Build Coastguard Worker %t = fadd <4 x double> %r, %s 19*9880d681SAndroid Build Coastguard Worker ret <4 x double> %t 20*9880d681SAndroid Build Coastguard Worker; CHECK: qvlpcldx 21*9880d681SAndroid Build Coastguard Worker; CHECK: qvlfdx 22*9880d681SAndroid Build Coastguard Worker; CHECK: qvfperm 23*9880d681SAndroid Build Coastguard Worker; CHECK: blr 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @bar1(<4 x double>* %a) { 27*9880d681SAndroid Build Coastguard Workerentry: 28*9880d681SAndroid Build Coastguard Worker %r = load <4 x double>, <4 x double>* %a, align 8 29*9880d681SAndroid Build Coastguard Worker %b = getelementptr <4 x double>, <4 x double>* %a, i32 16 30*9880d681SAndroid Build Coastguard Worker %s = load <4 x double>, <4 x double>* %b, align 8 31*9880d681SAndroid Build Coastguard Worker %t = fadd <4 x double> %r, %s 32*9880d681SAndroid Build Coastguard Worker ret <4 x double> %t 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @bar2(<4 x double>* %a) { 36*9880d681SAndroid Build Coastguard Workerentry: 37*9880d681SAndroid Build Coastguard Worker %r = load <4 x double>, <4 x double>* %a, align 8 38*9880d681SAndroid Build Coastguard Worker %b = getelementptr <4 x double>, <4 x double>* %a, i32 1 39*9880d681SAndroid Build Coastguard Worker %s = load <4 x double>, <4 x double>* %b, align 32 40*9880d681SAndroid Build Coastguard Worker %t = fadd <4 x double> %r, %s 41*9880d681SAndroid Build Coastguard Worker ret <4 x double> %t 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @bar3(<4 x double>* %a) { 45*9880d681SAndroid Build Coastguard Workerentry: 46*9880d681SAndroid Build Coastguard Worker %r = load <4 x double>, <4 x double>* %a, align 8 47*9880d681SAndroid Build Coastguard Worker %b = getelementptr <4 x double>, <4 x double>* %a, i32 1 48*9880d681SAndroid Build Coastguard Worker %s = load <4 x double>, <4 x double>* %b, align 8 49*9880d681SAndroid Build Coastguard Worker %t = fadd <4 x double> %r, %s 50*9880d681SAndroid Build Coastguard Worker ret <4 x double> %t 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @bar4(<4 x double>* %a) { 54*9880d681SAndroid Build Coastguard Workerentry: 55*9880d681SAndroid Build Coastguard Worker %r = load <4 x double>, <4 x double>* %a, align 8 56*9880d681SAndroid Build Coastguard Worker %b = getelementptr <4 x double>, <4 x double>* %a, i32 1 57*9880d681SAndroid Build Coastguard Worker %s = load <4 x double>, <4 x double>* %b, align 8 58*9880d681SAndroid Build Coastguard Worker %c = getelementptr <4 x double>, <4 x double>* %b, i32 1 59*9880d681SAndroid Build Coastguard Worker %t = load <4 x double>, <4 x double>* %c, align 8 60*9880d681SAndroid Build Coastguard Worker %u = fadd <4 x double> %r, %s 61*9880d681SAndroid Build Coastguard Worker %v = fadd <4 x double> %u, %t 62*9880d681SAndroid Build Coastguard Worker ret <4 x double> %v 63*9880d681SAndroid Build Coastguard Worker} 64*9880d681SAndroid Build Coastguard Worker 65