1*fcdb99e0SJonas Paulsson; RUN: llc < %s -mtriple=s390x-linux-gnu \ 2*fcdb99e0SJonas Paulsson; RUN: | FileCheck %s --check-prefixes=CHECK,DEFAULT 3*fcdb99e0SJonas Paulsson; RUN: llc < %s -mtriple=s390x-linux-gnu -mattr=soft-float \ 4*fcdb99e0SJonas Paulsson; RUN: | FileCheck %s --check-prefixes=CHECK,SOFT-FLOAT 5*fcdb99e0SJonas Paulsson; RUN: llc < %s -mtriple=s390x-linux-gnu -mattr=-soft-float \ 6*fcdb99e0SJonas Paulsson; RUN: | FileCheck %s --check-prefixes=CHECK,NO-SOFT-FL 7*fcdb99e0SJonas Paulsson; RUN: llc < %s -mtriple=s390x-linux-gnu -mattr=-vector \ 8*fcdb99e0SJonas Paulsson; RUN: | FileCheck %s --check-prefixes=CHECK,NO-VECTOR 9*fcdb99e0SJonas Paulsson; 10*fcdb99e0SJonas Paulsson; Test per function attributes and command line arguments that override them. 11*fcdb99e0SJonas Paulsson 12*fcdb99e0SJonas Paulssonattributes #1 = { "target-cpu"="z14" "target-features"="+vector" "use-soft-float"="false" } 13*fcdb99e0SJonas Paulssondefine double @fun1(double* %A) #1 { 14*fcdb99e0SJonas Paulsson; CHECK-LABEL: fun1: 15*fcdb99e0SJonas Paulsson; DEFAULT: ld %f0, 0(%r2) 16*fcdb99e0SJonas Paulsson; SOFT-FLOAT: lg %r2, 0(%r2) 17*fcdb99e0SJonas Paulsson; NO-SOFT-FL: ld %f0, 0(%r2) 18*fcdb99e0SJonas Paulsson; NO-VECTOR: ld %f0, 0(%r2) 19*fcdb99e0SJonas Paulsson; CHECK-NEXT: br %r14 20*fcdb99e0SJonas Paulssonentry: 21*fcdb99e0SJonas Paulsson %0 = load double, double* %A 22*fcdb99e0SJonas Paulsson ret double %0 23*fcdb99e0SJonas Paulsson} 24*fcdb99e0SJonas Paulsson 25*fcdb99e0SJonas Paulssonattributes #2 = { "target-cpu"="z14" "target-features"="+vector" "use-soft-float"="true" } 26*fcdb99e0SJonas Paulssondefine double @fun2(double* %A) #2 { 27*fcdb99e0SJonas Paulsson; CHECK-LABEL: fun2: 28*fcdb99e0SJonas Paulsson; DEFAULT: lg %r2, 0(%r2) 29*fcdb99e0SJonas Paulsson; SOFT-FLOAT: lg %r2, 0(%r2) 30*fcdb99e0SJonas Paulsson; NO-SOFT-FL: lg %r2, 0(%r2) 31*fcdb99e0SJonas Paulsson; NO-VECTOR: lg %r2, 0(%r2) 32*fcdb99e0SJonas Paulsson; CHECK-NEXT: br %r14 33*fcdb99e0SJonas Paulssonentry: 34*fcdb99e0SJonas Paulsson %0 = load double, double* %A 35*fcdb99e0SJonas Paulsson ret double %0 36*fcdb99e0SJonas Paulsson} 37*fcdb99e0SJonas Paulsson 38*fcdb99e0SJonas Paulssonattributes #3 = { "target-cpu"="z14" "target-features"="+vector" "use-soft-float"="false" } 39*fcdb99e0SJonas Paulssondefine <2 x double> @fun3(<2 x double>* %A) #3 { 40*fcdb99e0SJonas Paulsson; CHECK-LABEL: fun3: 41*fcdb99e0SJonas Paulsson; DEFAULT: vl %v24, 0(%r2), 4 42*fcdb99e0SJonas Paulsson; SOFT-FLOAT: lg %r0, 0(%r2) 43*fcdb99e0SJonas Paulsson; SOFT-FLOAT-NEXT: lg %r3, 8(%r2) 44*fcdb99e0SJonas Paulsson; SOFT-FLOAT-NEXT: lgr %r2, %r0 45*fcdb99e0SJonas Paulsson; NO-SOFT-FL: vl %v24, 0(%r2), 4 46*fcdb99e0SJonas Paulsson; NO-VECTOR: ld %f0, 0(%r2) 47*fcdb99e0SJonas Paulsson; NO-VECTOR-NEXT: ld %f2, 8(%r2) 48*fcdb99e0SJonas Paulsson; CHECK-NEXT: br %r14 49*fcdb99e0SJonas Paulssonentry: 50*fcdb99e0SJonas Paulsson %0 = load <2 x double>, <2 x double>* %A 51*fcdb99e0SJonas Paulsson ret <2 x double> %0 52*fcdb99e0SJonas Paulsson} 53*fcdb99e0SJonas Paulsson 54*fcdb99e0SJonas Paulssonattributes #4 = { "target-cpu"="z14" "target-features"="+vector" "use-soft-float"="true" } 55*fcdb99e0SJonas Paulssondefine <2 x double> @fun4(<2 x double>* %A) #4 { 56*fcdb99e0SJonas Paulsson; CHECK-LABEL: fun4: 57*fcdb99e0SJonas Paulsson; DEFAULT: lg %r0, 0(%r2) 58*fcdb99e0SJonas Paulsson; DEFAULT-NEXT: lg %r3, 8(%r2) 59*fcdb99e0SJonas Paulsson; DEFAULT-NEXT: lgr %r2, %r0 60*fcdb99e0SJonas Paulsson; SOFT-FLOAT: lg %r0, 0(%r2) 61*fcdb99e0SJonas Paulsson; SOFT-FLOAT-NEXT: lg %r3, 8(%r2) 62*fcdb99e0SJonas Paulsson; SOFT-FLOAT-NEXT: lgr %r2, %r0 63*fcdb99e0SJonas Paulsson; NO-SOFT-FL: lg %r0, 0(%r2) 64*fcdb99e0SJonas Paulsson; NO-SOFT-FL-NEXT: lg %r3, 8(%r2) 65*fcdb99e0SJonas Paulsson; NO-SOFT-FL-NEXT: lgr %r2, %r0 66*fcdb99e0SJonas Paulsson; NO-VECTOR: lg %r0, 0(%r2) 67*fcdb99e0SJonas Paulsson; NO-VECTOR-NEXT: lg %r3, 8(%r2) 68*fcdb99e0SJonas Paulsson; NO-VECTOR-NEXT: lgr %r2, %r0 69*fcdb99e0SJonas Paulsson; CHECK-NEXT: br %r14 70*fcdb99e0SJonas Paulssonentry: 71*fcdb99e0SJonas Paulsson %0 = load <2 x double>, <2 x double>* %A 72*fcdb99e0SJonas Paulsson ret <2 x double> %0 73*fcdb99e0SJonas Paulsson} 74*fcdb99e0SJonas Paulsson 75*fcdb99e0SJonas Paulssonattributes #5 = { "target-cpu"="z14" "target-features"="-vector" "use-soft-float"="false" } 76*fcdb99e0SJonas Paulssondefine <2 x double> @fun5(<2 x double>* %A) #5 { 77*fcdb99e0SJonas Paulsson; CHECK-LABEL: fun5: 78*fcdb99e0SJonas Paulsson; DEFAULT: ld %f0, 0(%r2) 79*fcdb99e0SJonas Paulsson; DEFAULT-NEXT: ld %f2, 8(%r2) 80*fcdb99e0SJonas Paulsson; SOFT-FLOAT: lg %r0, 0(%r2) 81*fcdb99e0SJonas Paulsson; SOFT-FLOAT-NEXT: lg %r3, 8(%r2) 82*fcdb99e0SJonas Paulsson; SOFT-FLOAT-NEXT: lgr %r2, %r0 83*fcdb99e0SJonas Paulsson; NO-SOFT-FL: ld %f0, 0(%r2) 84*fcdb99e0SJonas Paulsson; NO-SOFT-FL-NEXT: ld %f2, 8(%r2) 85*fcdb99e0SJonas Paulsson; NO-VECTOR: ld %f0, 0(%r2) 86*fcdb99e0SJonas Paulsson; NO-VECTOR-NEXT: ld %f2, 8(%r2) 87*fcdb99e0SJonas Paulsson; CHECK-NEXT: br %r14 88*fcdb99e0SJonas Paulssonentry: 89*fcdb99e0SJonas Paulsson %0 = load <2 x double>, <2 x double>* %A 90*fcdb99e0SJonas Paulsson ret <2 x double> %0 91*fcdb99e0SJonas Paulsson} 92*fcdb99e0SJonas Paulsson 93*fcdb99e0SJonas Paulssonattributes #6 = { "target-cpu"="zEC12" "use-soft-float"="false" } 94*fcdb99e0SJonas Paulssondefine <2 x double> @fun6(<2 x double>* %A) #6 { 95*fcdb99e0SJonas Paulsson; CHECK-LABEL: fun6: 96*fcdb99e0SJonas Paulsson; DEFAULT: ld %f0, 0(%r2) 97*fcdb99e0SJonas Paulsson; DEFAULT-NEXT: ld %f2, 8(%r2) 98*fcdb99e0SJonas Paulsson; SOFT-FLOAT: lg %r0, 0(%r2) 99*fcdb99e0SJonas Paulsson; SOFT-FLOAT-NEXT: lg %r3, 8(%r2) 100*fcdb99e0SJonas Paulsson; SOFT-FLOAT-NEXT: lgr %r2, %r0 101*fcdb99e0SJonas Paulsson; NO-SOFT-FL: ld %f0, 0(%r2) 102*fcdb99e0SJonas Paulsson; NO-SOFT-FL-NEXT: ld %f2, 8(%r2) 103*fcdb99e0SJonas Paulsson; NO-VECTOR: ld %f0, 0(%r2) 104*fcdb99e0SJonas Paulsson; NO-VECTOR-NEXT: ld %f2, 8(%r2) 105*fcdb99e0SJonas Paulsson; CHECK-NEXT: br %r14 106*fcdb99e0SJonas Paulssonentry: 107*fcdb99e0SJonas Paulsson %0 = load <2 x double>, <2 x double>* %A 108*fcdb99e0SJonas Paulsson ret <2 x double> %0 109*fcdb99e0SJonas Paulsson} 110*fcdb99e0SJonas Paulsson 111*fcdb99e0SJonas Paulssonattributes #7 = { "target-cpu"="zEC12" "target-features"="+vector" "use-soft-float"="false" } 112*fcdb99e0SJonas Paulssondefine <2 x double> @fun7(<2 x double>* %A) #7 { 113*fcdb99e0SJonas Paulsson; CHECK-LABEL: fun7: 114*fcdb99e0SJonas Paulsson; DEFAULT: vl %v24, 0(%r2), 4 115*fcdb99e0SJonas Paulsson; SOFT-FLOAT: lg %r0, 0(%r2) 116*fcdb99e0SJonas Paulsson; SOFT-FLOAT-NEXT: lg %r3, 8(%r2) 117*fcdb99e0SJonas Paulsson; SOFT-FLOAT-NEXT: lgr %r2, %r0 118*fcdb99e0SJonas Paulsson; NO-SOFT-FL: vl %v24, 0(%r2), 4 119*fcdb99e0SJonas Paulsson; NO-VECTOR: ld %f0, 0(%r2) 120*fcdb99e0SJonas Paulsson; NO-VECTOR-NEXT: ld %f2, 8(%r2) 121*fcdb99e0SJonas Paulsson; CHECK-NEXT: br %r14 122*fcdb99e0SJonas Paulssonentry: 123*fcdb99e0SJonas Paulsson %0 = load <2 x double>, <2 x double>* %A 124*fcdb99e0SJonas Paulsson ret <2 x double> %0 125*fcdb99e0SJonas Paulsson} 126