brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.2 KiB · 56e4b19 Raw
399 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2;; These test functions previously triggered the following error when emitting machine code:3;; LLVM ERROR: Attempting to emit UCVTFv1i64 instruction but the Feature_HasNEON predicate(s) are not met4; RUN: llc -mtriple=aarch64 -mattr=+neon,+fullfp16,+alternate-sextload-cvt-f32-pattern < %s | FileCheck %s --check-prefixes=CHECK,NEON-ENABLED5; RUN: llc -mtriple=aarch64 -mattr=-neon,+fullfp16,+alternate-sextload-cvt-f32-pattern < %s | FileCheck %s --check-prefixes=CHECK,NEON-DISABLED6;; Emit an object file so that verifyPredicates is called (it is not used for ASM output).7; RUN: llc -mtriple=aarch64 -mattr=-neon,+fullfp16 -o /dev/null %s --asm-show-inst -filetype=obj8 9define double @ui8_to_double(ptr %i, ptr %f) {10; NEON-ENABLED-LABEL: ui8_to_double:11; NEON-ENABLED:       // %bb.0: // %entry12; NEON-ENABLED-NEXT:    ldr b0, [x0]13; NEON-ENABLED-NEXT:    ucvtf d0, d014; NEON-ENABLED-NEXT:    ret15;16; NEON-DISABLED-LABEL: ui8_to_double:17; NEON-DISABLED:       // %bb.0: // %entry18; NEON-DISABLED-NEXT:    ldrb w8, [x0]19; NEON-DISABLED-NEXT:    ucvtf d0, w820; NEON-DISABLED-NEXT:    ret21entry:22  %ld = load i8, ptr %i, align 123  %conv = uitofp i8 %ld to double24  ret double %conv25}26 27define float @ui8_to_float(ptr %i, ptr %f) {28; NEON-ENABLED-LABEL: ui8_to_float:29; NEON-ENABLED:       // %bb.0: // %entry30; NEON-ENABLED-NEXT:    ldr b0, [x0]31; NEON-ENABLED-NEXT:    ucvtf s0, s032; NEON-ENABLED-NEXT:    ret33;34; NEON-DISABLED-LABEL: ui8_to_float:35; NEON-DISABLED:       // %bb.0: // %entry36; NEON-DISABLED-NEXT:    ldrb w8, [x0]37; NEON-DISABLED-NEXT:    ucvtf s0, w838; NEON-DISABLED-NEXT:    ret39entry:40  %ld = load i8, ptr %i, align 141  %conv = uitofp i8 %ld to float42  ret float %conv43}44 45define half @ui8_to_half(ptr %i, ptr %f) {46; NEON-ENABLED-LABEL: ui8_to_half:47; NEON-ENABLED:       // %bb.0: // %entry48; NEON-ENABLED-NEXT:    ldr b0, [x0]49; NEON-ENABLED-NEXT:    ucvtf h0, h050; NEON-ENABLED-NEXT:    ret51;52; NEON-DISABLED-LABEL: ui8_to_half:53; NEON-DISABLED:       // %bb.0: // %entry54; NEON-DISABLED-NEXT:    ldrb w8, [x0]55; NEON-DISABLED-NEXT:    ucvtf h0, w856; NEON-DISABLED-NEXT:    ret57entry:58  %ld = load i8, ptr %i, align 159  %conv = uitofp i8 %ld to half60  ret half %conv61}62 63define double @ui16_to_double(ptr %i, ptr %f) {64; NEON-ENABLED-LABEL: ui16_to_double:65; NEON-ENABLED:       // %bb.0: // %entry66; NEON-ENABLED-NEXT:    ldr h0, [x0]67; NEON-ENABLED-NEXT:    ucvtf d0, d068; NEON-ENABLED-NEXT:    ret69;70; NEON-DISABLED-LABEL: ui16_to_double:71; NEON-DISABLED:       // %bb.0: // %entry72; NEON-DISABLED-NEXT:    ldrh w8, [x0]73; NEON-DISABLED-NEXT:    ucvtf d0, w874; NEON-DISABLED-NEXT:    ret75entry:76  %ld = load i16, ptr %i, align 177  %conv = uitofp i16 %ld to double78  ret double %conv79}80 81define float @ui16_to_float(ptr %i, ptr %f) {82; NEON-ENABLED-LABEL: ui16_to_float:83; NEON-ENABLED:       // %bb.0: // %entry84; NEON-ENABLED-NEXT:    ldr h0, [x0]85; NEON-ENABLED-NEXT:    ucvtf s0, s086; NEON-ENABLED-NEXT:    ret87;88; NEON-DISABLED-LABEL: ui16_to_float:89; NEON-DISABLED:       // %bb.0: // %entry90; NEON-DISABLED-NEXT:    ldrh w8, [x0]91; NEON-DISABLED-NEXT:    ucvtf s0, w892; NEON-DISABLED-NEXT:    ret93entry:94  %ld = load i16, ptr %i, align 195  %conv = uitofp i16 %ld to float96  ret float %conv97}98 99define half @ui16_to_half(ptr %i, ptr %f) {100; NEON-ENABLED-LABEL: ui16_to_half:101; NEON-ENABLED:       // %bb.0: // %entry102; NEON-ENABLED-NEXT:    ldr h0, [x0]103; NEON-ENABLED-NEXT:    ucvtf h0, h0104; NEON-ENABLED-NEXT:    ret105;106; NEON-DISABLED-LABEL: ui16_to_half:107; NEON-DISABLED:       // %bb.0: // %entry108; NEON-DISABLED-NEXT:    ldrh w8, [x0]109; NEON-DISABLED-NEXT:    ucvtf h0, w8110; NEON-DISABLED-NEXT:    ret111entry:112  %ld = load i16, ptr %i, align 1113  %conv = uitofp i16 %ld to half114  ret half %conv115}116 117define double @ui32_to_double(ptr %i, ptr %f) {118; NEON-ENABLED-LABEL: ui32_to_double:119; NEON-ENABLED:       // %bb.0: // %entry120; NEON-ENABLED-NEXT:    ldr s0, [x0]121; NEON-ENABLED-NEXT:    ucvtf d0, d0122; NEON-ENABLED-NEXT:    ret123;124; NEON-DISABLED-LABEL: ui32_to_double:125; NEON-DISABLED:       // %bb.0: // %entry126; NEON-DISABLED-NEXT:    ldr w8, [x0]127; NEON-DISABLED-NEXT:    ucvtf d0, w8128; NEON-DISABLED-NEXT:    ret129entry:130  %ld = load i32, ptr %i, align 1131  %conv = uitofp i32 %ld to double132  ret double %conv133}134 135define float @ui32_to_float(ptr %i, ptr %f) {136; NEON-ENABLED-LABEL: ui32_to_float:137; NEON-ENABLED:       // %bb.0: // %entry138; NEON-ENABLED-NEXT:    ldr s0, [x0]139; NEON-ENABLED-NEXT:    ucvtf s0, s0140; NEON-ENABLED-NEXT:    ret141;142; NEON-DISABLED-LABEL: ui32_to_float:143; NEON-DISABLED:       // %bb.0: // %entry144; NEON-DISABLED-NEXT:    ldr w8, [x0]145; NEON-DISABLED-NEXT:    ucvtf s0, w8146; NEON-DISABLED-NEXT:    ret147entry:148  %ld = load i32, ptr %i, align 1149  %conv = uitofp i32 %ld to float150  ret float %conv151}152 153define half @ui32_to_half(ptr %i, ptr %f) {154; CHECK-LABEL: ui32_to_half:155; CHECK:       // %bb.0: // %entry156; CHECK-NEXT:    ldr w8, [x0]157; CHECK-NEXT:    ucvtf h0, w8158; CHECK-NEXT:    ret159entry:160  %ld = load i32, ptr %i, align 1161  %conv = uitofp i32 %ld to half162  ret half %conv163}164 165define double @ui64_to_double(ptr %i, ptr %f) {166; NEON-ENABLED-LABEL: ui64_to_double:167; NEON-ENABLED:       // %bb.0: // %entry168; NEON-ENABLED-NEXT:    ldr d0, [x0]169; NEON-ENABLED-NEXT:    ucvtf d0, d0170; NEON-ENABLED-NEXT:    ret171;172; NEON-DISABLED-LABEL: ui64_to_double:173; NEON-DISABLED:       // %bb.0: // %entry174; NEON-DISABLED-NEXT:    ldr x8, [x0]175; NEON-DISABLED-NEXT:    ucvtf d0, x8176; NEON-DISABLED-NEXT:    ret177entry:178  %ld = load i64, ptr %i, align 1179  %conv = uitofp i64 %ld to double180  ret double %conv181}182 183define float @ui64_to_float(ptr %i, ptr %f) {184; CHECK-LABEL: ui64_to_float:185; CHECK:       // %bb.0: // %entry186; CHECK-NEXT:    ldr x8, [x0]187; CHECK-NEXT:    ucvtf s0, x8188; CHECK-NEXT:    ret189entry:190  %ld = load i64, ptr %i, align 1191  %conv = uitofp i64 %ld to float192  ret float %conv193}194 195define half @ui64_to_half(ptr %i, ptr %f) {196; CHECK-LABEL: ui64_to_half:197; CHECK:       // %bb.0: // %entry198; CHECK-NEXT:    ldr x8, [x0]199; CHECK-NEXT:    ucvtf h0, x8200; CHECK-NEXT:    ret201entry:202  %ld = load i64, ptr %i, align 1203  %conv = uitofp i64 %ld to half204  ret half %conv205}206 207 208define double @si8_to_double(ptr %i, ptr %f) {209; CHECK-LABEL: si8_to_double:210; CHECK:       // %bb.0: // %entry211; CHECK-NEXT:    ldrsb w8, [x0]212; CHECK-NEXT:    scvtf d0, w8213; CHECK-NEXT:    ret214entry:215  %ld = load i8, ptr %i, align 1216  %conv = sitofp i8 %ld to double217  ret double %conv218}219 220define float @si8_to_float(ptr %i, ptr %f) {221; NEON-ENABLED-LABEL: si8_to_float:222; NEON-ENABLED:       // %bb.0: // %entry223; NEON-ENABLED-NEXT:    ldr b0, [x0]224; NEON-ENABLED-NEXT:    sshll v0.8h, v0.8b, #0225; NEON-ENABLED-NEXT:    sshll v0.4s, v0.4h, #0226; NEON-ENABLED-NEXT:    scvtf s0, s0227; NEON-ENABLED-NEXT:    ret228;229; NEON-DISABLED-LABEL: si8_to_float:230; NEON-DISABLED:       // %bb.0: // %entry231; NEON-DISABLED-NEXT:    ldrsb w8, [x0]232; NEON-DISABLED-NEXT:    scvtf s0, w8233; NEON-DISABLED-NEXT:    ret234entry:235  %ld = load i8, ptr %i, align 1236  %conv = sitofp i8 %ld to float237  ret float %conv238}239 240define half @si8_to_half(ptr %i, ptr %f) {241; CHECK-LABEL: si8_to_half:242; CHECK:       // %bb.0: // %entry243; CHECK-NEXT:    ldrsb w8, [x0]244; CHECK-NEXT:    scvtf h0, w8245; CHECK-NEXT:    ret246entry:247  %ld = load i8, ptr %i, align 1248  %conv = sitofp i8 %ld to half249  ret half %conv250}251 252define double @si16_to_double(ptr %i, ptr %f) {253; NEON-ENABLED-LABEL: si16_to_double:254; NEON-ENABLED:       // %bb.0: // %entry255; NEON-ENABLED-NEXT:    ldr h0, [x0]256; NEON-ENABLED-NEXT:    sshll v0.4s, v0.4h, #0257; NEON-ENABLED-NEXT:    sshll v0.2d, v0.2s, #0258; NEON-ENABLED-NEXT:    scvtf d0, d0259; NEON-ENABLED-NEXT:    ret260;261; NEON-DISABLED-LABEL: si16_to_double:262; NEON-DISABLED:       // %bb.0: // %entry263; NEON-DISABLED-NEXT:    ldrsh w8, [x0]264; NEON-DISABLED-NEXT:    scvtf d0, w8265; NEON-DISABLED-NEXT:    ret266entry:267  %ld = load i16, ptr %i, align 1268  %conv = sitofp i16 %ld to double269  ret double %conv270}271 272define float @si16_to_float(ptr %i, ptr %f) {273; NEON-ENABLED-LABEL: si16_to_float:274; NEON-ENABLED:       // %bb.0: // %entry275; NEON-ENABLED-NEXT:    ldr h0, [x0]276; NEON-ENABLED-NEXT:    sshll v0.4s, v0.4h, #0277; NEON-ENABLED-NEXT:    scvtf s0, s0278; NEON-ENABLED-NEXT:    ret279;280; NEON-DISABLED-LABEL: si16_to_float:281; NEON-DISABLED:       // %bb.0: // %entry282; NEON-DISABLED-NEXT:    ldrsh w8, [x0]283; NEON-DISABLED-NEXT:    scvtf s0, w8284; NEON-DISABLED-NEXT:    ret285entry:286  %ld = load i16, ptr %i, align 1287  %conv = sitofp i16 %ld to float288  ret float %conv289}290 291define half @si16_to_half(ptr %i, ptr %f) {292; NEON-ENABLED-LABEL: si16_to_half:293; NEON-ENABLED:       // %bb.0: // %entry294; NEON-ENABLED-NEXT:    ldr h0, [x0]295; NEON-ENABLED-NEXT:    scvtf h0, h0296; NEON-ENABLED-NEXT:    ret297;298; NEON-DISABLED-LABEL: si16_to_half:299; NEON-DISABLED:       // %bb.0: // %entry300; NEON-DISABLED-NEXT:    ldrsh w8, [x0]301; NEON-DISABLED-NEXT:    scvtf h0, w8302; NEON-DISABLED-NEXT:    ret303entry:304  %ld = load i16, ptr %i, align 1305  %conv = sitofp i16 %ld to half306  ret half %conv307}308 309define double @si32_to_double(ptr %i, ptr %f) {310; NEON-ENABLED-LABEL: si32_to_double:311; NEON-ENABLED:       // %bb.0: // %entry312; NEON-ENABLED-NEXT:    ldr s0, [x0]313; NEON-ENABLED-NEXT:    sshll v0.2d, v0.2s, #0314; NEON-ENABLED-NEXT:    scvtf d0, d0315; NEON-ENABLED-NEXT:    ret316;317; NEON-DISABLED-LABEL: si32_to_double:318; NEON-DISABLED:       // %bb.0: // %entry319; NEON-DISABLED-NEXT:    ldr w8, [x0]320; NEON-DISABLED-NEXT:    scvtf d0, w8321; NEON-DISABLED-NEXT:    ret322entry:323  %ld = load i32, ptr %i, align 1324  %conv = sitofp i32 %ld to double325  ret double %conv326}327 328define float @si32_to_float(ptr %i, ptr %f) {329; NEON-ENABLED-LABEL: si32_to_float:330; NEON-ENABLED:       // %bb.0: // %entry331; NEON-ENABLED-NEXT:    ldr s0, [x0]332; NEON-ENABLED-NEXT:    scvtf s0, s0333; NEON-ENABLED-NEXT:    ret334;335; NEON-DISABLED-LABEL: si32_to_float:336; NEON-DISABLED:       // %bb.0: // %entry337; NEON-DISABLED-NEXT:    ldr w8, [x0]338; NEON-DISABLED-NEXT:    scvtf s0, w8339; NEON-DISABLED-NEXT:    ret340entry:341  %ld = load i32, ptr %i, align 1342  %conv = sitofp i32 %ld to float343  ret float %conv344}345 346define half @si32_to_half(ptr %i, ptr %f) {347; CHECK-LABEL: si32_to_half:348; CHECK:       // %bb.0: // %entry349; CHECK-NEXT:    ldr w8, [x0]350; CHECK-NEXT:    scvtf h0, w8351; CHECK-NEXT:    ret352entry:353  %ld = load i32, ptr %i, align 1354  %conv = sitofp i32 %ld to half355  ret half %conv356}357 358define double @si64_to_double(ptr %i, ptr %f) {359; NEON-ENABLED-LABEL: si64_to_double:360; NEON-ENABLED:       // %bb.0: // %entry361; NEON-ENABLED-NEXT:    ldr d0, [x0]362; NEON-ENABLED-NEXT:    scvtf d0, d0363; NEON-ENABLED-NEXT:    ret364;365; NEON-DISABLED-LABEL: si64_to_double:366; NEON-DISABLED:       // %bb.0: // %entry367; NEON-DISABLED-NEXT:    ldr x8, [x0]368; NEON-DISABLED-NEXT:    scvtf d0, x8369; NEON-DISABLED-NEXT:    ret370entry:371  %ld = load i64, ptr %i, align 1372  %conv = sitofp i64 %ld to double373  ret double %conv374}375 376define float @si64_to_float(ptr %i, ptr %f) {377; CHECK-LABEL: si64_to_float:378; CHECK:       // %bb.0: // %entry379; CHECK-NEXT:    ldr x8, [x0]380; CHECK-NEXT:    scvtf s0, x8381; CHECK-NEXT:    ret382entry:383  %ld = load i64, ptr %i, align 1384  %conv = sitofp i64 %ld to float385  ret float %conv386}387 388define half @si64_to_half(ptr %i, ptr %f) {389; CHECK-LABEL: si64_to_half:390; CHECK:       // %bb.0: // %entry391; CHECK-NEXT:    ldr x8, [x0]392; CHECK-NEXT:    scvtf h0, x8393; CHECK-NEXT:    ret394entry:395  %ld = load i64, ptr %i, align 1396  %conv = sitofp i64 %ld to half397  ret half %conv398}399