brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.6 KiB · 74782d4 Raw
400 lines · plain
1; RUN: llc -mcpu=swift < %s | FileCheck %s2target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"3target triple = "arm-apple-ios6.1.0"4 5;;; Float vectors6 7%v2f32 = type <2 x float>8; CHECK-LABEL: test_v2f32.sqrt:{{.*}}9define %v2f32 @test_v2f32.sqrt(%v2f32 %a) {10  ; CHECK: sqrt11  %1 = call %v2f32 @llvm.sqrt.v2f32(%v2f32 %a)12  ret %v2f32 %113}14; CHECK-LABEL: test_v2f32.powi:{{.*}}15define %v2f32 @test_v2f32.powi(%v2f32 %a, i32 %b) {16  ; CHECK: pow17  %1 = call %v2f32 @llvm.powi.v2f32.i32(%v2f32 %a, i32 %b)18  ret %v2f32 %119}20; CHECK-LABEL: test_v2f32.sin:{{.*}}21define %v2f32 @test_v2f32.sin(%v2f32 %a) {22  ; CHECK: sin23  %1 = call %v2f32 @llvm.sin.v2f32(%v2f32 %a)24  ret %v2f32 %125}26; CHECK-LABEL: test_v2f32.cos:{{.*}}27define %v2f32 @test_v2f32.cos(%v2f32 %a) {28  ; CHECK: cos29  %1 = call %v2f32 @llvm.cos.v2f32(%v2f32 %a)30  ret %v2f32 %131}32; CHECK-LABEL: test_v2f32.tan:{{.*}}33define %v2f32 @test_v2f32.tan(%v2f32 %a) {34  ; CHECK: tan35  %1 = call %v2f32 @llvm.tan.v2f32(%v2f32 %a)36  ret %v2f32 %137}38; CHECK-LABEL: test_v2f32.pow:{{.*}}39define %v2f32 @test_v2f32.pow(%v2f32 %a, %v2f32 %b) {40  ; CHECK: pow41  %1 = call %v2f32 @llvm.pow.v2f32(%v2f32 %a, %v2f32 %b)42  ret %v2f32 %143}44; CHECK-LABEL: test_v2f32.exp:{{.*}}45define %v2f32 @test_v2f32.exp(%v2f32 %a) {46  ; CHECK: exp47  %1 = call %v2f32 @llvm.exp.v2f32(%v2f32 %a)48  ret %v2f32 %149}50; CHECK-LABEL: test_v2f32.exp2:{{.*}}51define %v2f32 @test_v2f32.exp2(%v2f32 %a) {52  ; CHECK: exp53  %1 = call %v2f32 @llvm.exp2.v2f32(%v2f32 %a)54  ret %v2f32 %155}56; CHECK-LABEL: test_v2f32.log:{{.*}}57define %v2f32 @test_v2f32.log(%v2f32 %a) {58  ; CHECK: log59  %1 = call %v2f32 @llvm.log.v2f32(%v2f32 %a)60  ret %v2f32 %161}62; CHECK-LABEL: test_v2f32.log10:{{.*}}63define %v2f32 @test_v2f32.log10(%v2f32 %a) {64  ; CHECK: log65  %1 = call %v2f32 @llvm.log10.v2f32(%v2f32 %a)66  ret %v2f32 %167}68; CHECK-LABEL: test_v2f32.log2:{{.*}}69define %v2f32 @test_v2f32.log2(%v2f32 %a) {70  ; CHECK: log71  %1 = call %v2f32 @llvm.log2.v2f32(%v2f32 %a)72  ret %v2f32 %173}74; CHECK: test_v2f32.fma:{{.*}}75define %v2f32 @test_v2f32.fma(%v2f32 %a, %v2f32 %b, %v2f32 %c) {76  ; CHECK: fma77  %1 = call %v2f32 @llvm.fma.v2f32(%v2f32 %a, %v2f32 %b, %v2f32 %c)78  ret %v2f32 %179}80; CHECK-LABEL: test_v2f32.fabs:{{.*}}81define %v2f32 @test_v2f32.fabs(%v2f32 %a) {82  ; CHECK: vabs.f3283  %1 = call %v2f32 @llvm.fabs.v2f32(%v2f32 %a)84  ret %v2f32 %185}86; CHECK-LABEL: test_v2f32.floor:{{.*}}87define %v2f32 @test_v2f32.floor(%v2f32 %a) {88  ; CHECK: _floorf89  %1 = call %v2f32 @llvm.floor.v2f32(%v2f32 %a)90  ret %v2f32 %191}92; CHECK-LABEL: test_v2f32.ceil:{{.*}}93define %v2f32 @test_v2f32.ceil(%v2f32 %a) {94  ; CHECK: _ceilf95  %1 = call %v2f32 @llvm.ceil.v2f32(%v2f32 %a)96  ret %v2f32 %197}98; CHECK-LABEL: test_v2f32.trunc:{{.*}}99define %v2f32 @test_v2f32.trunc(%v2f32 %a) {100  ; CHECK: trunc101  %1 = call %v2f32 @llvm.trunc.v2f32(%v2f32 %a)102  ret %v2f32 %1103}104; CHECK-LABEL: test_v2f32.rint:{{.*}}105define %v2f32 @test_v2f32.rint(%v2f32 %a) {106  ; CHECK: rint107  %1 = call %v2f32 @llvm.rint.v2f32(%v2f32 %a)108  ret %v2f32 %1109}110; CHECK-LABEL: test_v2f32.nearbyint:{{.*}}111define %v2f32 @test_v2f32.nearbyint(%v2f32 %a) {112  ; CHECK: nearbyint113  %1 = call %v2f32 @llvm.nearbyint.v2f32(%v2f32 %a)114  ret %v2f32 %1115}116 117declare %v2f32 @llvm.sqrt.v2f32(%v2f32) #0118declare %v2f32 @llvm.powi.v2f32.i32(%v2f32, i32) #0119declare %v2f32 @llvm.sin.v2f32(%v2f32) #0120declare %v2f32 @llvm.cos.v2f32(%v2f32) #0121declare %v2f32 @llvm.tan.v2f32(%v2f32) #0122declare %v2f32 @llvm.pow.v2f32(%v2f32, %v2f32) #0123declare %v2f32 @llvm.exp.v2f32(%v2f32) #0124declare %v2f32 @llvm.exp2.v2f32(%v2f32) #0125declare %v2f32 @llvm.log.v2f32(%v2f32) #0126declare %v2f32 @llvm.log10.v2f32(%v2f32) #0127declare %v2f32 @llvm.log2.v2f32(%v2f32) #0128declare %v2f32 @llvm.fma.v2f32(%v2f32, %v2f32, %v2f32) #0129declare %v2f32 @llvm.fabs.v2f32(%v2f32) #0130declare %v2f32 @llvm.floor.v2f32(%v2f32) #0131declare %v2f32 @llvm.ceil.v2f32(%v2f32) #0132declare %v2f32 @llvm.trunc.v2f32(%v2f32) #0133declare %v2f32 @llvm.rint.v2f32(%v2f32) #0134declare %v2f32 @llvm.nearbyint.v2f32(%v2f32) #0135 136;;;137 138%v4f32 = type <4 x float>139; CHECK-LABEL: test_v4f32.sqrt:{{.*}}140define %v4f32 @test_v4f32.sqrt(%v4f32 %a) {141  ; CHECK: sqrt142  %1 = call %v4f32 @llvm.sqrt.v4f32(%v4f32 %a)143  ret %v4f32 %1144}145; CHECK-LABEL: test_v4f32.powi:{{.*}}146define %v4f32 @test_v4f32.powi(%v4f32 %a, i32 %b) {147  ; CHECK: pow148  %1 = call %v4f32 @llvm.powi.v4f32.i32(%v4f32 %a, i32 %b)149  ret %v4f32 %1150}151; CHECK-LABEL: test_v4f32.sin:{{.*}}152define %v4f32 @test_v4f32.sin(%v4f32 %a) {153  ; CHECK: sin154  %1 = call %v4f32 @llvm.sin.v4f32(%v4f32 %a)155  ret %v4f32 %1156}157; CHECK-LABEL: test_v4f32.cos:{{.*}}158define %v4f32 @test_v4f32.cos(%v4f32 %a) {159  ; CHECK: cos160  %1 = call %v4f32 @llvm.cos.v4f32(%v4f32 %a)161  ret %v4f32 %1162}163; CHECK-LABEL: test_v4f32.tan:{{.*}}164define %v4f32 @test_v4f32.tan(%v4f32 %a) {165  ; CHECK: tan166  %1 = call %v4f32 @llvm.tan.v4f32(%v4f32 %a)167  ret %v4f32 %1168}169; CHECK-LABEL: test_v4f32.pow:{{.*}}170define %v4f32 @test_v4f32.pow(%v4f32 %a, %v4f32 %b) {171  ; CHECK: pow172  %1 = call %v4f32 @llvm.pow.v4f32(%v4f32 %a, %v4f32 %b)173  ret %v4f32 %1174}175; CHECK-LABEL: test_v4f32.exp:{{.*}}176define %v4f32 @test_v4f32.exp(%v4f32 %a) {177  ; CHECK: exp178  %1 = call %v4f32 @llvm.exp.v4f32(%v4f32 %a)179  ret %v4f32 %1180}181; CHECK-LABEL: test_v4f32.exp2:{{.*}}182define %v4f32 @test_v4f32.exp2(%v4f32 %a) {183  ; CHECK: exp184  %1 = call %v4f32 @llvm.exp2.v4f32(%v4f32 %a)185  ret %v4f32 %1186}187; CHECK-LABEL: test_v4f32.log:{{.*}}188define %v4f32 @test_v4f32.log(%v4f32 %a) {189  ; CHECK: log190  %1 = call %v4f32 @llvm.log.v4f32(%v4f32 %a)191  ret %v4f32 %1192}193; CHECK-LABEL: test_v4f32.log10:{{.*}}194define %v4f32 @test_v4f32.log10(%v4f32 %a) {195  ; CHECK: log196  %1 = call %v4f32 @llvm.log10.v4f32(%v4f32 %a)197  ret %v4f32 %1198}199; CHECK-LABEL: test_v4f32.log2:{{.*}}200define %v4f32 @test_v4f32.log2(%v4f32 %a) {201  ; CHECK: log202  %1 = call %v4f32 @llvm.log2.v4f32(%v4f32 %a)203  ret %v4f32 %1204}205; CHECK-LABEL: test_v4f32.fma:{{.*}}206define %v4f32 @test_v4f32.fma(%v4f32 %a, %v4f32 %b, %v4f32 %c) {207  ; CHECK: fma208  %1 = call %v4f32 @llvm.fma.v4f32(%v4f32 %a, %v4f32 %b, %v4f32 %c)209  ret %v4f32 %1210}211; CHECK-LABEL: test_v4f32.fabs:{{.*}}212define %v4f32 @test_v4f32.fabs(%v4f32 %a) {213  ; CHECK: vabs.f32214  %1 = call %v4f32 @llvm.fabs.v4f32(%v4f32 %a)215  ret %v4f32 %1216}217; CHECK-LABEL: test_v4f32.floor:{{.*}}218define %v4f32 @test_v4f32.floor(%v4f32 %a) {219  ; CHECK: floor220  %1 = call %v4f32 @llvm.floor.v4f32(%v4f32 %a)221  ret %v4f32 %1222}223; CHECK-LABEL: test_v4f32.ceil:{{.*}}224define %v4f32 @test_v4f32.ceil(%v4f32 %a) {225  ; CHECK: _ceil226  %1 = call %v4f32 @llvm.ceil.v4f32(%v4f32 %a)227  ret %v4f32 %1228}229; CHECK-LABEL: test_v4f32.trunc:{{.*}}230define %v4f32 @test_v4f32.trunc(%v4f32 %a) {231  ; CHECK: trunc232  %1 = call %v4f32 @llvm.trunc.v4f32(%v4f32 %a)233  ret %v4f32 %1234}235; CHECK-LABEL: test_v4f32.rint:{{.*}}236define %v4f32 @test_v4f32.rint(%v4f32 %a) {237  ; CHECK: rint238  %1 = call %v4f32 @llvm.rint.v4f32(%v4f32 %a)239  ret %v4f32 %1240}241; CHECK-LABEL: test_v4f32.nearbyint:{{.*}}242define %v4f32 @test_v4f32.nearbyint(%v4f32 %a) {243  ; CHECK: nearbyint244  %1 = call %v4f32 @llvm.nearbyint.v4f32(%v4f32 %a)245  ret %v4f32 %1246}247 248declare %v4f32 @llvm.sqrt.v4f32(%v4f32) #0249declare %v4f32 @llvm.powi.v4f32.i32(%v4f32, i32) #0250declare %v4f32 @llvm.sin.v4f32(%v4f32) #0251declare %v4f32 @llvm.cos.v4f32(%v4f32) #0252declare %v4f32 @llvm.tan.v4f32(%v4f32) #0253declare %v4f32 @llvm.pow.v4f32(%v4f32, %v4f32) #0254declare %v4f32 @llvm.exp.v4f32(%v4f32) #0255declare %v4f32 @llvm.exp2.v4f32(%v4f32) #0256declare %v4f32 @llvm.log.v4f32(%v4f32) #0257declare %v4f32 @llvm.log10.v4f32(%v4f32) #0258declare %v4f32 @llvm.log2.v4f32(%v4f32) #0259declare %v4f32 @llvm.fma.v4f32(%v4f32, %v4f32, %v4f32) #0260declare %v4f32 @llvm.fabs.v4f32(%v4f32) #0261declare %v4f32 @llvm.floor.v4f32(%v4f32) #0262declare %v4f32 @llvm.ceil.v4f32(%v4f32) #0263declare %v4f32 @llvm.trunc.v4f32(%v4f32) #0264declare %v4f32 @llvm.rint.v4f32(%v4f32) #0265declare %v4f32 @llvm.nearbyint.v4f32(%v4f32) #0266 267;;; Double vector268 269%v2f64 = type <2 x double>270; CHECK-LABEL: test_v2f64.sqrt:{{.*}}271define %v2f64 @test_v2f64.sqrt(%v2f64 %a) {272  ; CHECK: sqrt273  %1 = call %v2f64 @llvm.sqrt.v2f64(%v2f64 %a)274  ret %v2f64 %1275}276; CHECK-LABEL: test_v2f64.powi:{{.*}}277define %v2f64 @test_v2f64.powi(%v2f64 %a, i32 %b) {278  ; CHECK: pow279  %1 = call %v2f64 @llvm.powi.v2f64.i32(%v2f64 %a, i32 %b)280  ret %v2f64 %1281}282; CHECK-LABEL: test_v2f64.sin:{{.*}}283define %v2f64 @test_v2f64.sin(%v2f64 %a) {284  ; CHECK: sin285  %1 = call %v2f64 @llvm.sin.v2f64(%v2f64 %a)286  ret %v2f64 %1287}288; CHECK-LABEL: test_v2f64.cos:{{.*}}289define %v2f64 @test_v2f64.cos(%v2f64 %a) {290  ; CHECK: cos291  %1 = call %v2f64 @llvm.cos.v2f64(%v2f64 %a)292  ret %v2f64 %1293}294; CHECK-LABEL: test_v2f64.tan:{{.*}}295define %v2f64 @test_v2f64.tan(%v2f64 %a) {296  ; CHECK: tan297  %1 = call %v2f64 @llvm.tan.v2f64(%v2f64 %a)298  ret %v2f64 %1299}300; CHECK-LABEL: test_v2f64.pow:{{.*}}301define %v2f64 @test_v2f64.pow(%v2f64 %a, %v2f64 %b) {302  ; CHECK: pow303  %1 = call %v2f64 @llvm.pow.v2f64(%v2f64 %a, %v2f64 %b)304  ret %v2f64 %1305}306; CHECK-LABEL: test_v2f64.exp:{{.*}}307define %v2f64 @test_v2f64.exp(%v2f64 %a) {308  ; CHECK: exp309  %1 = call %v2f64 @llvm.exp.v2f64(%v2f64 %a)310  ret %v2f64 %1311}312; CHECK-LABEL: test_v2f64.exp2:{{.*}}313define %v2f64 @test_v2f64.exp2(%v2f64 %a) {314  ; CHECK: exp315  %1 = call %v2f64 @llvm.exp2.v2f64(%v2f64 %a)316  ret %v2f64 %1317}318; CHECK-LABEL: test_v2f64.log:{{.*}}319define %v2f64 @test_v2f64.log(%v2f64 %a) {320  ; CHECK: log321  %1 = call %v2f64 @llvm.log.v2f64(%v2f64 %a)322  ret %v2f64 %1323}324; CHECK-LABEL: test_v2f64.log10:{{.*}}325define %v2f64 @test_v2f64.log10(%v2f64 %a) {326  ; CHECK: log327  %1 = call %v2f64 @llvm.log10.v2f64(%v2f64 %a)328  ret %v2f64 %1329}330; CHECK-LABEL: test_v2f64.log2:{{.*}}331define %v2f64 @test_v2f64.log2(%v2f64 %a) {332  ; CHECK: log333  %1 = call %v2f64 @llvm.log2.v2f64(%v2f64 %a)334  ret %v2f64 %1335}336; CHECK-LABEL: test_v2f64.fma:{{.*}}337define %v2f64 @test_v2f64.fma(%v2f64 %a, %v2f64 %b, %v2f64 %c) {338  ; CHECK: fma339  %1 = call %v2f64 @llvm.fma.v2f64(%v2f64 %a, %v2f64 %b, %v2f64 %c)340  ret %v2f64 %1341}342; CHECK-LABEL: test_v2f64.fabs:{{.*}}343define %v2f64 @test_v2f64.fabs(%v2f64 %a) {344  ; CHECK: bfc {{r[1,3]}}, #31, #1345  ; CHECK: bfc {{r[1,3]}}, #31, #1346  %1 = call %v2f64 @llvm.fabs.v2f64(%v2f64 %a)347  ret %v2f64 %1348}349; CHECK-LABEL: test_v2f64.floor:{{.*}}350define %v2f64 @test_v2f64.floor(%v2f64 %a) {351  ; CHECK: floor352  %1 = call %v2f64 @llvm.floor.v2f64(%v2f64 %a)353  ret %v2f64 %1354}355; CHECK-LABEL: test_v2f64.ceil:{{.*}}356define %v2f64 @test_v2f64.ceil(%v2f64 %a) {357  ; CHECK: _ceil358  %1 = call %v2f64 @llvm.ceil.v2f64(%v2f64 %a)359  ret %v2f64 %1360}361; CHECK-LABEL: test_v2f64.trunc:{{.*}}362define %v2f64 @test_v2f64.trunc(%v2f64 %a) {363  ; CHECK: trunc364  %1 = call %v2f64 @llvm.trunc.v2f64(%v2f64 %a)365  ret %v2f64 %1366}367; CHECK-LABEL: test_v2f64.rint:{{.*}}368define %v2f64 @test_v2f64.rint(%v2f64 %a) {369  ; CHECK: rint370  %1 = call %v2f64 @llvm.rint.v2f64(%v2f64 %a)371  ret %v2f64 %1372}373; CHECK-LABEL: test_v2f64.nearbyint:{{.*}}374define %v2f64 @test_v2f64.nearbyint(%v2f64 %a) {375  ; CHECK: nearbyint376  %1 = call %v2f64 @llvm.nearbyint.v2f64(%v2f64 %a)377  ret %v2f64 %1378}379 380declare %v2f64 @llvm.sqrt.v2f64(%v2f64) #0381declare %v2f64 @llvm.powi.v2f64.i32(%v2f64, i32) #0382declare %v2f64 @llvm.sin.v2f64(%v2f64) #0383declare %v2f64 @llvm.cos.v2f64(%v2f64) #0384declare %v2f64 @llvm.tan.v2f64(%v2f64) #0385declare %v2f64 @llvm.pow.v2f64(%v2f64, %v2f64) #0386declare %v2f64 @llvm.exp.v2f64(%v2f64) #0387declare %v2f64 @llvm.exp2.v2f64(%v2f64) #0388declare %v2f64 @llvm.log.v2f64(%v2f64) #0389declare %v2f64 @llvm.log10.v2f64(%v2f64) #0390declare %v2f64 @llvm.log2.v2f64(%v2f64) #0391declare %v2f64 @llvm.fma.v2f64(%v2f64, %v2f64, %v2f64) #0392declare %v2f64 @llvm.fabs.v2f64(%v2f64) #0393declare %v2f64 @llvm.floor.v2f64(%v2f64) #0394declare %v2f64 @llvm.ceil.v2f64(%v2f64) #0395declare %v2f64 @llvm.trunc.v2f64(%v2f64) #0396declare %v2f64 @llvm.rint.v2f64(%v2f64) #0397declare %v2f64 @llvm.nearbyint.v2f64(%v2f64) #0398 399attributes #0 = { nounwind readonly }400