Home | History | Annotate | Download | only in PowerPC
      1 ; RUN: llc < %s -mcpu=a2q | FileCheck %s
      2 target 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 target triple = "powerpc64-bgq-linux"
      4 
      5 define <4 x double> @foo(<4 x double>* %a) {
      6 entry:
      7   %r = load <4 x double>, <4 x double>* %a, align 32
      8   ret <4 x double> %r
      9 ; CHECK: qvlfdx
     10 ; CHECK: blr
     11 }
     12 
     13 define <4 x double> @bar(<4 x double>* %a) {
     14 entry:
     15   %r = load <4 x double>, <4 x double>* %a, align 8
     16   %b = getelementptr <4 x double>, <4 x double>* %a, i32 16
     17   %s = load <4 x double>, <4 x double>* %b, align 32
     18   %t = fadd <4 x double> %r, %s
     19   ret <4 x double> %t
     20 ; CHECK: qvlpcldx
     21 ; CHECK: qvlfdx
     22 ; CHECK: qvfperm
     23 ; CHECK: blr
     24 }
     25 
     26 define <4 x double> @bar1(<4 x double>* %a) {
     27 entry:
     28   %r = load <4 x double>, <4 x double>* %a, align 8
     29   %b = getelementptr <4 x double>, <4 x double>* %a, i32 16
     30   %s = load <4 x double>, <4 x double>* %b, align 8
     31   %t = fadd <4 x double> %r, %s
     32   ret <4 x double> %t
     33 }
     34 
     35 define <4 x double> @bar2(<4 x double>* %a) {
     36 entry:
     37   %r = load <4 x double>, <4 x double>* %a, align 8
     38   %b = getelementptr <4 x double>, <4 x double>* %a, i32 1
     39   %s = load <4 x double>, <4 x double>* %b, align 32
     40   %t = fadd <4 x double> %r, %s
     41   ret <4 x double> %t
     42 }
     43 
     44 define <4 x double> @bar3(<4 x double>* %a) {
     45 entry:
     46   %r = load <4 x double>, <4 x double>* %a, align 8
     47   %b = getelementptr <4 x double>, <4 x double>* %a, i32 1
     48   %s = load <4 x double>, <4 x double>* %b, align 8
     49   %t = fadd <4 x double> %r, %s
     50   ret <4 x double> %t
     51 }
     52 
     53 define <4 x double> @bar4(<4 x double>* %a) {
     54 entry:
     55   %r = load <4 x double>, <4 x double>* %a, align 8
     56   %b = getelementptr <4 x double>, <4 x double>* %a, i32 1
     57   %s = load <4 x double>, <4 x double>* %b, align 8
     58   %c = getelementptr <4 x double>, <4 x double>* %b, i32 1
     59   %t = load <4 x double>, <4 x double>* %c, align 8
     60   %u = fadd <4 x double> %r, %s
     61   %v = fadd <4 x double> %u, %t
     62   ret <4 x double> %v
     63 }
     64 
     65