brintos

brintos / llvm-project-archived public Read only

0
0
Text · 28.7 KiB · 0571bbc Raw
653 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64 -mcpu=apple-m1 -mattr=+store-pair-suppress -o - %s | FileCheck --check-prefix=SUPPRESS %s3; RUN: llc -mtriple=aarch64 -mcpu=apple-m1 -mattr=-store-pair-suppress -o - %s | FileCheck --check-prefix=NOSUPPRESS %s4 5define void @vector_units_critial(ptr %dst, <8 x i32> %v0) {6; SUPPRESS-LABEL: vector_units_critial:7; SUPPRESS:       // %bb.0: // %entry8; SUPPRESS-NEXT:    uzp1 v0.8h, v0.8h, v1.8h9; SUPPRESS-NEXT:    xtn v0.8b, v0.8h10; SUPPRESS-NEXT:    mul v1.8b, v0.8b, v0.8b11; SUPPRESS-NEXT:    str d1, [x0, #8]12; SUPPRESS-NEXT:    str d0, [x0]13; SUPPRESS-NEXT:    ret14;15; NOSUPPRESS-LABEL: vector_units_critial:16; NOSUPPRESS:       // %bb.0: // %entry17; NOSUPPRESS-NEXT:    uzp1 v0.8h, v0.8h, v1.8h18; NOSUPPRESS-NEXT:    xtn v0.8b, v0.8h19; NOSUPPRESS-NEXT:    mul v1.8b, v0.8b, v0.8b20; NOSUPPRESS-NEXT:    stp d0, d1, [x0]21; NOSUPPRESS-NEXT:    ret22entry:23  %add.ptr.1 = getelementptr i8, ptr %dst, i64 824  %t = trunc <8 x i32> %v0 to <8 x i8>25  %mul = mul <8 x i8> %t, %t26  store <8 x i8> %mul, ptr %add.ptr.1, align 127  store <8 x i8> %t, ptr %dst, align 128  ret void29}30 31%struct.widget = type { float, float }32 33define void @load_store_units_critical(ptr %arg, ptr noundef %arg1, i64 noundef %arg2, i64 noundef %arg3) {34; SUPPRESS-LABEL: load_store_units_critical:35; SUPPRESS:       // %bb.0: // %bb36; SUPPRESS-NEXT:    ldr x8, [x0, #8]37; SUPPRESS-NEXT:    ldp s0, s1, [x8]38; SUPPRESS-NEXT:    add x8, x1, x2, lsl #339; SUPPRESS-NEXT:    ldp s2, s3, [x8]40; SUPPRESS-NEXT:    ldp s4, s5, [x8, #8]41; SUPPRESS-NEXT:    fmul s6, s5, s142; SUPPRESS-NEXT:    fmul s1, s4, s143; SUPPRESS-NEXT:    fnmsub s4, s4, s0, s644; SUPPRESS-NEXT:    fmadd s0, s5, s0, s145; SUPPRESS-NEXT:    fadd s1, s4, s246; SUPPRESS-NEXT:    fadd s5, s0, s347; SUPPRESS-NEXT:    stp s1, s5, [x8]48; SUPPRESS-NEXT:    fsub s2, s2, s449; SUPPRESS-NEXT:    fsub s0, s3, s050; SUPPRESS-NEXT:    stp s2, s0, [x8, #8]51; SUPPRESS-NEXT:    ldr x9, [x0, #8]52; SUPPRESS-NEXT:    ldp s3, s4, [x9]53; SUPPRESS-NEXT:    ldp s6, s7, [x8, #16]54; SUPPRESS-NEXT:    ldp s16, s17, [x8, #24]55; SUPPRESS-NEXT:    fmul s18, s17, s456; SUPPRESS-NEXT:    fmul s4, s16, s457; SUPPRESS-NEXT:    fnmsub s16, s16, s3, s1858; SUPPRESS-NEXT:    fmadd s3, s17, s3, s459; SUPPRESS-NEXT:    fadd s4, s16, s660; SUPPRESS-NEXT:    fadd s17, s3, s761; SUPPRESS-NEXT:    stp s4, s17, [x8, #16]62; SUPPRESS-NEXT:    fsub s6, s6, s1663; SUPPRESS-NEXT:    fsub s3, s7, s364; SUPPRESS-NEXT:    stp s6, s3, [x8, #24]65; SUPPRESS-NEXT:    ldr x9, [x0, #8]66; SUPPRESS-NEXT:    ldp s7, s16, [x9]67; SUPPRESS-NEXT:    fmul s18, s16, s1768; SUPPRESS-NEXT:    fmul s17, s7, s1769; SUPPRESS-NEXT:    fnmsub s7, s7, s4, s1870; SUPPRESS-NEXT:    fmadd s4, s16, s4, s1771; SUPPRESS-NEXT:    fadd s16, s7, s172; SUPPRESS-NEXT:    fadd s17, s4, s573; SUPPRESS-NEXT:    stp s16, s17, [x8]74; SUPPRESS-NEXT:    fsub s1, s1, s775; SUPPRESS-NEXT:    fsub s4, s5, s476; SUPPRESS-NEXT:    stp s1, s4, [x8, #16]77; SUPPRESS-NEXT:    ldr x10, [x0, #8]78; SUPPRESS-NEXT:    lsl x9, x3, #479; SUPPRESS-NEXT:    add x10, x10, x980; SUPPRESS-NEXT:    ldp s1, s4, [x10]81; SUPPRESS-NEXT:    fmul s5, s4, s382; SUPPRESS-NEXT:    fmul s3, s1, s383; SUPPRESS-NEXT:    fnmsub s1, s1, s6, s584; SUPPRESS-NEXT:    fmadd s3, s4, s6, s385; SUPPRESS-NEXT:    fadd s4, s1, s286; SUPPRESS-NEXT:    fadd s5, s3, s087; SUPPRESS-NEXT:    stp s4, s5, [x8, #8]88; SUPPRESS-NEXT:    fsub s1, s2, s189; SUPPRESS-NEXT:    fsub s0, s0, s390; SUPPRESS-NEXT:    stp s1, s0, [x8, #24]91; SUPPRESS-NEXT:    ldr x10, [x0, #8]92; SUPPRESS-NEXT:    ldp s0, s1, [x10]93; SUPPRESS-NEXT:    ldp s2, s3, [x8, #32]94; SUPPRESS-NEXT:    ldp s4, s5, [x8, #40]95; SUPPRESS-NEXT:    fmul s6, s5, s196; SUPPRESS-NEXT:    fmul s1, s4, s197; SUPPRESS-NEXT:    fnmsub s4, s4, s0, s698; SUPPRESS-NEXT:    fmadd s0, s5, s0, s199; SUPPRESS-NEXT:    fadd s1, s4, s2100; SUPPRESS-NEXT:    fadd s5, s0, s3101; SUPPRESS-NEXT:    stp s1, s5, [x8, #32]102; SUPPRESS-NEXT:    fsub s2, s2, s4103; SUPPRESS-NEXT:    fsub s3, s3, s0104; SUPPRESS-NEXT:    stp s2, s3, [x8, #40]105; SUPPRESS-NEXT:    ldr x10, [x0, #8]106; SUPPRESS-NEXT:    ldp s0, s4, [x10]107; SUPPRESS-NEXT:    ldp s6, s7, [x8, #48]108; SUPPRESS-NEXT:    ldp s16, s17, [x8, #56]109; SUPPRESS-NEXT:    fmul s18, s17, s4110; SUPPRESS-NEXT:    fmul s4, s16, s4111; SUPPRESS-NEXT:    fnmsub s16, s16, s0, s18112; SUPPRESS-NEXT:    fmadd s0, s17, s0, s4113; SUPPRESS-NEXT:    fadd s4, s16, s6114; SUPPRESS-NEXT:    fadd s17, s0, s7115; SUPPRESS-NEXT:    stp s4, s17, [x8, #48]116; SUPPRESS-NEXT:    fsub s6, s6, s16117; SUPPRESS-NEXT:    fsub s0, s7, s0118; SUPPRESS-NEXT:    stp s6, s0, [x8, #56]119; SUPPRESS-NEXT:    ldr x10, [x0, #8]120; SUPPRESS-NEXT:    ldp s7, s16, [x10]121; SUPPRESS-NEXT:    fmul s18, s16, s17122; SUPPRESS-NEXT:    fmul s17, s7, s17123; SUPPRESS-NEXT:    fnmsub s7, s7, s4, s18124; SUPPRESS-NEXT:    fmadd s4, s16, s4, s17125; SUPPRESS-NEXT:    fadd s16, s7, s1126; SUPPRESS-NEXT:    fadd s17, s4, s5127; SUPPRESS-NEXT:    stp s16, s17, [x8, #32]128; SUPPRESS-NEXT:    fsub s7, s1, s7129; SUPPRESS-NEXT:    fsub s4, s5, s4130; SUPPRESS-NEXT:    stp s7, s4, [x8, #48]131; SUPPRESS-NEXT:    ldr x10, [x0, #8]132; SUPPRESS-NEXT:    add x9, x10, x9133; SUPPRESS-NEXT:    ldp s1, s5, [x9]134; SUPPRESS-NEXT:    fmul s18, s5, s0135; SUPPRESS-NEXT:    fmul s0, s1, s0136; SUPPRESS-NEXT:    fnmsub s1, s1, s6, s18137; SUPPRESS-NEXT:    fmadd s5, s5, s6, s0138; SUPPRESS-NEXT:    fadd s6, s1, s2139; SUPPRESS-NEXT:    fadd s18, s5, s3140; SUPPRESS-NEXT:    stp s6, s18, [x8, #40]141; SUPPRESS-NEXT:    fsub s0, s2, s1142; SUPPRESS-NEXT:    fsub s1, s3, s5143; SUPPRESS-NEXT:    stp s0, s1, [x8, #56]144; SUPPRESS-NEXT:    ldr x9, [x0, #8]145; SUPPRESS-NEXT:    ldp s2, s3, [x9]146; SUPPRESS-NEXT:    ldp s5, s19, [x8]147; SUPPRESS-NEXT:    fmul s20, s17, s3148; SUPPRESS-NEXT:    fmul s3, s16, s3149; SUPPRESS-NEXT:    fnmsub s16, s16, s2, s20150; SUPPRESS-NEXT:    fmadd s2, s17, s2, s3151; SUPPRESS-NEXT:    fadd s3, s16, s5152; SUPPRESS-NEXT:    fadd s17, s2, s19153; SUPPRESS-NEXT:    stp s3, s17, [x8]154; SUPPRESS-NEXT:    fsub s3, s5, s16155; SUPPRESS-NEXT:    fsub s2, s19, s2156; SUPPRESS-NEXT:    stp s3, s2, [x8, #32]157; SUPPRESS-NEXT:    ldr x9, [x0, #8]158; SUPPRESS-NEXT:    add x9, x9, w3, sxtw #3159; SUPPRESS-NEXT:    ldp s2, s3, [x9]160; SUPPRESS-NEXT:    ldp s5, s16, [x8, #8]161; SUPPRESS-NEXT:    fmul s17, s18, s3162; SUPPRESS-NEXT:    fmul s3, s6, s3163; SUPPRESS-NEXT:    fnmsub s6, s6, s2, s17164; SUPPRESS-NEXT:    fmadd s2, s18, s2, s3165; SUPPRESS-NEXT:    fadd s3, s6, s5166; SUPPRESS-NEXT:    fadd s17, s2, s16167; SUPPRESS-NEXT:    stp s3, s17, [x8, #8]168; SUPPRESS-NEXT:    fsub s3, s5, s6169; SUPPRESS-NEXT:    fsub s2, s16, s2170; SUPPRESS-NEXT:    stp s3, s2, [x8, #40]171; SUPPRESS-NEXT:    lsl x9, x3, #33172; SUPPRESS-NEXT:    ldr x10, [x0, #8]173; SUPPRESS-NEXT:    add x9, x10, x9, asr #29174; SUPPRESS-NEXT:    ldp s2, s3, [x9]175; SUPPRESS-NEXT:    ldp s5, s6, [x8, #16]176; SUPPRESS-NEXT:    fmul s16, s4, s3177; SUPPRESS-NEXT:    fmul s3, s7, s3178; SUPPRESS-NEXT:    fnmsub s7, s7, s2, s16179; SUPPRESS-NEXT:    fmadd s2, s4, s2, s3180; SUPPRESS-NEXT:    fadd s3, s7, s5181; SUPPRESS-NEXT:    fadd s4, s2, s6182; SUPPRESS-NEXT:    stp s3, s4, [x8, #16]183; SUPPRESS-NEXT:    fsub s3, s5, s7184; SUPPRESS-NEXT:    fsub s2, s6, s2185; SUPPRESS-NEXT:    stp s3, s2, [x8, #48]186; SUPPRESS-NEXT:    add w9, w3, w3, lsl #1187; SUPPRESS-NEXT:    ldr x10, [x0, #8]188; SUPPRESS-NEXT:    add x9, x10, w9, sxtw #3189; SUPPRESS-NEXT:    ldp s2, s3, [x9]190; SUPPRESS-NEXT:    ldp s4, s5, [x8, #24]191; SUPPRESS-NEXT:    fmul s6, s1, s3192; SUPPRESS-NEXT:    fmul s3, s0, s3193; SUPPRESS-NEXT:    fnmsub s0, s0, s2, s6194; SUPPRESS-NEXT:    fmadd s1, s1, s2, s3195; SUPPRESS-NEXT:    fadd s2, s0, s4196; SUPPRESS-NEXT:    fadd s3, s1, s5197; SUPPRESS-NEXT:    stp s2, s3, [x8, #24]198; SUPPRESS-NEXT:    fsub s0, s4, s0199; SUPPRESS-NEXT:    fsub s1, s5, s1200; SUPPRESS-NEXT:    stp s0, s1, [x8, #56]201; SUPPRESS-NEXT:    ret202;203; NOSUPPRESS-LABEL: load_store_units_critical:204; NOSUPPRESS:       // %bb.0: // %bb205; NOSUPPRESS-NEXT:    ldr x8, [x0, #8]206; NOSUPPRESS-NEXT:    ldp s0, s1, [x8]207; NOSUPPRESS-NEXT:    add x8, x1, x2, lsl #3208; NOSUPPRESS-NEXT:    ldp s2, s3, [x8]209; NOSUPPRESS-NEXT:    ldp s4, s5, [x8, #8]210; NOSUPPRESS-NEXT:    fmul s6, s5, s1211; NOSUPPRESS-NEXT:    fmul s1, s4, s1212; NOSUPPRESS-NEXT:    fnmsub s4, s4, s0, s6213; NOSUPPRESS-NEXT:    fmadd s0, s5, s0, s1214; NOSUPPRESS-NEXT:    fadd s1, s4, s2215; NOSUPPRESS-NEXT:    fadd s5, s0, s3216; NOSUPPRESS-NEXT:    stp s1, s5, [x8]217; NOSUPPRESS-NEXT:    fsub s2, s2, s4218; NOSUPPRESS-NEXT:    fsub s0, s3, s0219; NOSUPPRESS-NEXT:    stp s2, s0, [x8, #8]220; NOSUPPRESS-NEXT:    ldr x9, [x0, #8]221; NOSUPPRESS-NEXT:    ldp s3, s4, [x9]222; NOSUPPRESS-NEXT:    ldp s6, s7, [x8, #16]223; NOSUPPRESS-NEXT:    ldp s16, s17, [x8, #24]224; NOSUPPRESS-NEXT:    fmul s18, s17, s4225; NOSUPPRESS-NEXT:    fmul s4, s16, s4226; NOSUPPRESS-NEXT:    fnmsub s16, s16, s3, s18227; NOSUPPRESS-NEXT:    fmadd s3, s17, s3, s4228; NOSUPPRESS-NEXT:    fadd s4, s16, s6229; NOSUPPRESS-NEXT:    fadd s17, s3, s7230; NOSUPPRESS-NEXT:    stp s4, s17, [x8, #16]231; NOSUPPRESS-NEXT:    fsub s6, s6, s16232; NOSUPPRESS-NEXT:    fsub s3, s7, s3233; NOSUPPRESS-NEXT:    stp s6, s3, [x8, #24]234; NOSUPPRESS-NEXT:    ldr x9, [x0, #8]235; NOSUPPRESS-NEXT:    ldp s7, s16, [x9]236; NOSUPPRESS-NEXT:    fmul s18, s16, s17237; NOSUPPRESS-NEXT:    fmul s17, s7, s17238; NOSUPPRESS-NEXT:    fnmsub s7, s7, s4, s18239; NOSUPPRESS-NEXT:    fmadd s4, s16, s4, s17240; NOSUPPRESS-NEXT:    fadd s16, s7, s1241; NOSUPPRESS-NEXT:    fadd s17, s4, s5242; NOSUPPRESS-NEXT:    stp s16, s17, [x8]243; NOSUPPRESS-NEXT:    fsub s1, s1, s7244; NOSUPPRESS-NEXT:    fsub s4, s5, s4245; NOSUPPRESS-NEXT:    stp s1, s4, [x8, #16]246; NOSUPPRESS-NEXT:    ldr x10, [x0, #8]247; NOSUPPRESS-NEXT:    lsl x9, x3, #4248; NOSUPPRESS-NEXT:    add x10, x10, x9249; NOSUPPRESS-NEXT:    ldp s1, s4, [x10]250; NOSUPPRESS-NEXT:    fmul s5, s4, s3251; NOSUPPRESS-NEXT:    fmul s3, s1, s3252; NOSUPPRESS-NEXT:    fnmsub s1, s1, s6, s5253; NOSUPPRESS-NEXT:    fmadd s3, s4, s6, s3254; NOSUPPRESS-NEXT:    fadd s4, s1, s2255; NOSUPPRESS-NEXT:    fadd s5, s3, s0256; NOSUPPRESS-NEXT:    stp s4, s5, [x8, #8]257; NOSUPPRESS-NEXT:    fsub s1, s2, s1258; NOSUPPRESS-NEXT:    fsub s0, s0, s3259; NOSUPPRESS-NEXT:    stp s1, s0, [x8, #24]260; NOSUPPRESS-NEXT:    ldr x10, [x0, #8]261; NOSUPPRESS-NEXT:    ldp s0, s1, [x10]262; NOSUPPRESS-NEXT:    ldp s2, s3, [x8, #32]263; NOSUPPRESS-NEXT:    ldp s4, s5, [x8, #40]264; NOSUPPRESS-NEXT:    fmul s6, s5, s1265; NOSUPPRESS-NEXT:    fmul s1, s4, s1266; NOSUPPRESS-NEXT:    fnmsub s4, s4, s0, s6267; NOSUPPRESS-NEXT:    fmadd s0, s5, s0, s1268; NOSUPPRESS-NEXT:    fadd s1, s4, s2269; NOSUPPRESS-NEXT:    fadd s5, s0, s3270; NOSUPPRESS-NEXT:    stp s1, s5, [x8, #32]271; NOSUPPRESS-NEXT:    fsub s2, s2, s4272; NOSUPPRESS-NEXT:    fsub s3, s3, s0273; NOSUPPRESS-NEXT:    stp s2, s3, [x8, #40]274; NOSUPPRESS-NEXT:    ldr x10, [x0, #8]275; NOSUPPRESS-NEXT:    ldp s0, s4, [x10]276; NOSUPPRESS-NEXT:    ldp s6, s7, [x8, #48]277; NOSUPPRESS-NEXT:    ldp s16, s17, [x8, #56]278; NOSUPPRESS-NEXT:    fmul s18, s17, s4279; NOSUPPRESS-NEXT:    fmul s4, s16, s4280; NOSUPPRESS-NEXT:    fnmsub s16, s16, s0, s18281; NOSUPPRESS-NEXT:    fmadd s0, s17, s0, s4282; NOSUPPRESS-NEXT:    fadd s4, s16, s6283; NOSUPPRESS-NEXT:    fadd s17, s0, s7284; NOSUPPRESS-NEXT:    stp s4, s17, [x8, #48]285; NOSUPPRESS-NEXT:    fsub s6, s6, s16286; NOSUPPRESS-NEXT:    fsub s0, s7, s0287; NOSUPPRESS-NEXT:    stp s6, s0, [x8, #56]288; NOSUPPRESS-NEXT:    ldr x10, [x0, #8]289; NOSUPPRESS-NEXT:    ldp s7, s16, [x10]290; NOSUPPRESS-NEXT:    fmul s18, s16, s17291; NOSUPPRESS-NEXT:    fmul s17, s7, s17292; NOSUPPRESS-NEXT:    fnmsub s7, s7, s4, s18293; NOSUPPRESS-NEXT:    fmadd s4, s16, s4, s17294; NOSUPPRESS-NEXT:    fadd s16, s7, s1295; NOSUPPRESS-NEXT:    fadd s17, s4, s5296; NOSUPPRESS-NEXT:    stp s16, s17, [x8, #32]297; NOSUPPRESS-NEXT:    fsub s7, s1, s7298; NOSUPPRESS-NEXT:    fsub s4, s5, s4299; NOSUPPRESS-NEXT:    stp s7, s4, [x8, #48]300; NOSUPPRESS-NEXT:    ldr x10, [x0, #8]301; NOSUPPRESS-NEXT:    add x9, x10, x9302; NOSUPPRESS-NEXT:    ldp s1, s5, [x9]303; NOSUPPRESS-NEXT:    fmul s18, s5, s0304; NOSUPPRESS-NEXT:    fmul s0, s1, s0305; NOSUPPRESS-NEXT:    fnmsub s1, s1, s6, s18306; NOSUPPRESS-NEXT:    fmadd s5, s5, s6, s0307; NOSUPPRESS-NEXT:    fadd s6, s1, s2308; NOSUPPRESS-NEXT:    fadd s18, s5, s3309; NOSUPPRESS-NEXT:    stp s6, s18, [x8, #40]310; NOSUPPRESS-NEXT:    fsub s0, s2, s1311; NOSUPPRESS-NEXT:    fsub s1, s3, s5312; NOSUPPRESS-NEXT:    stp s0, s1, [x8, #56]313; NOSUPPRESS-NEXT:    ldr x9, [x0, #8]314; NOSUPPRESS-NEXT:    ldp s2, s3, [x9]315; NOSUPPRESS-NEXT:    ldp s5, s19, [x8]316; NOSUPPRESS-NEXT:    fmul s20, s17, s3317; NOSUPPRESS-NEXT:    fmul s3, s16, s3318; NOSUPPRESS-NEXT:    fnmsub s16, s16, s2, s20319; NOSUPPRESS-NEXT:    fmadd s2, s17, s2, s3320; NOSUPPRESS-NEXT:    fadd s3, s16, s5321; NOSUPPRESS-NEXT:    fadd s17, s2, s19322; NOSUPPRESS-NEXT:    stp s3, s17, [x8]323; NOSUPPRESS-NEXT:    fsub s3, s5, s16324; NOSUPPRESS-NEXT:    fsub s2, s19, s2325; NOSUPPRESS-NEXT:    stp s3, s2, [x8, #32]326; NOSUPPRESS-NEXT:    ldr x9, [x0, #8]327; NOSUPPRESS-NEXT:    add x9, x9, w3, sxtw #3328; NOSUPPRESS-NEXT:    ldp s2, s3, [x9]329; NOSUPPRESS-NEXT:    ldp s5, s16, [x8, #8]330; NOSUPPRESS-NEXT:    fmul s17, s18, s3331; NOSUPPRESS-NEXT:    fmul s3, s6, s3332; NOSUPPRESS-NEXT:    fnmsub s6, s6, s2, s17333; NOSUPPRESS-NEXT:    fmadd s2, s18, s2, s3334; NOSUPPRESS-NEXT:    fadd s3, s6, s5335; NOSUPPRESS-NEXT:    fadd s17, s2, s16336; NOSUPPRESS-NEXT:    stp s3, s17, [x8, #8]337; NOSUPPRESS-NEXT:    fsub s3, s5, s6338; NOSUPPRESS-NEXT:    fsub s2, s16, s2339; NOSUPPRESS-NEXT:    stp s3, s2, [x8, #40]340; NOSUPPRESS-NEXT:    lsl x9, x3, #33341; NOSUPPRESS-NEXT:    ldr x10, [x0, #8]342; NOSUPPRESS-NEXT:    add x9, x10, x9, asr #29343; NOSUPPRESS-NEXT:    ldp s2, s3, [x9]344; NOSUPPRESS-NEXT:    ldp s5, s6, [x8, #16]345; NOSUPPRESS-NEXT:    fmul s16, s4, s3346; NOSUPPRESS-NEXT:    fmul s3, s7, s3347; NOSUPPRESS-NEXT:    fnmsub s7, s7, s2, s16348; NOSUPPRESS-NEXT:    fmadd s2, s4, s2, s3349; NOSUPPRESS-NEXT:    fadd s3, s7, s5350; NOSUPPRESS-NEXT:    fadd s4, s2, s6351; NOSUPPRESS-NEXT:    stp s3, s4, [x8, #16]352; NOSUPPRESS-NEXT:    fsub s3, s5, s7353; NOSUPPRESS-NEXT:    fsub s2, s6, s2354; NOSUPPRESS-NEXT:    stp s3, s2, [x8, #48]355; NOSUPPRESS-NEXT:    add w9, w3, w3, lsl #1356; NOSUPPRESS-NEXT:    ldr x10, [x0, #8]357; NOSUPPRESS-NEXT:    add x9, x10, w9, sxtw #3358; NOSUPPRESS-NEXT:    ldp s2, s3, [x9]359; NOSUPPRESS-NEXT:    ldp s4, s5, [x8, #24]360; NOSUPPRESS-NEXT:    fmul s6, s1, s3361; NOSUPPRESS-NEXT:    fmul s3, s0, s3362; NOSUPPRESS-NEXT:    fnmsub s0, s0, s2, s6363; NOSUPPRESS-NEXT:    fmadd s1, s1, s2, s3364; NOSUPPRESS-NEXT:    fadd s2, s0, s4365; NOSUPPRESS-NEXT:    fadd s3, s1, s5366; NOSUPPRESS-NEXT:    stp s2, s3, [x8, #24]367; NOSUPPRESS-NEXT:    fsub s0, s4, s0368; NOSUPPRESS-NEXT:    fsub s1, s5, s1369; NOSUPPRESS-NEXT:    stp s0, s1, [x8, #56]370; NOSUPPRESS-NEXT:    ret371bb:372  %shl = shl i64 %arg3, 1373  %getelementptr = getelementptr inbounds i8, ptr %arg, i64 8374  %load = load ptr, ptr %getelementptr, align 8375  %load4 = load float, ptr %load, align 4376  %getelementptr5 = getelementptr inbounds i8, ptr %load, i64 4377  %load6 = load float, ptr %getelementptr5, align 4378  %getelementptr7 = getelementptr %struct.widget, ptr %arg1, i64 %arg2379  %load8 = load float, ptr %getelementptr7, align 4380  %getelementptr9 = getelementptr inbounds i8, ptr %getelementptr7, i64 4381  %load10 = load float, ptr %getelementptr9, align 4382  %getelementptr11 = getelementptr i8, ptr %getelementptr7, i64 8383  %load12 = load float, ptr %getelementptr11, align 4384  %getelementptr13 = getelementptr i8, ptr %getelementptr7, i64 12385  %load14 = load float, ptr %getelementptr13, align 4386  %fmul = fmul fast float %load12, %load4387  %fmul15 = fmul fast float %load14, %load6388  %fmul16 = fmul fast float %load14, %load4389  %fmul17 = fmul fast float %load12, %load6390  %fsub = fsub fast float %fmul, %fmul15391  %fadd = fadd fast float %fmul16, %fmul17392  %fadd18 = fadd fast float %fsub, %load8393  %fadd19 = fadd fast float %fadd, %load10394  store float %fadd18, ptr %getelementptr7, align 4395  store float %fadd19, ptr %getelementptr9, align 4396  %fsub20 = fsub fast float %load8, %fsub397  %fsub21 = fsub fast float %load10, %fadd398  store float %fsub20, ptr %getelementptr11, align 4399  store float %fsub21, ptr %getelementptr13, align 4400  %load22 = load ptr, ptr %getelementptr, align 8401  %load23 = load float, ptr %load22, align 4402  %getelementptr24 = getelementptr inbounds i8, ptr %load22, i64 4403  %load25 = load float, ptr %getelementptr24, align 4404  %getelementptr26 = getelementptr i8, ptr %getelementptr7, i64 16405  %load27 = load float, ptr %getelementptr26, align 4406  %getelementptr28 = getelementptr i8, ptr %getelementptr7, i64 20407  %load29 = load float, ptr %getelementptr28, align 4408  %getelementptr30 = getelementptr i8, ptr %getelementptr7, i64 24409  %load31 = load float, ptr %getelementptr30, align 4410  %getelementptr32 = getelementptr i8, ptr %getelementptr7, i64 28411  %load33 = load float, ptr %getelementptr32, align 4412  %fmul34 = fmul fast float %load31, %load23413  %fmul35 = fmul fast float %load33, %load25414  %fmul36 = fmul fast float %load33, %load23415  %fmul37 = fmul fast float %load31, %load25416  %fsub38 = fsub fast float %fmul34, %fmul35417  %fadd39 = fadd fast float %fmul36, %fmul37418  %fadd40 = fadd fast float %fsub38, %load27419  %fadd41 = fadd fast float %fadd39, %load29420  store float %fadd40, ptr %getelementptr26, align 4421  store float %fadd41, ptr %getelementptr28, align 4422  %fsub42 = fsub fast float %load27, %fsub38423  %fsub43 = fsub fast float %load29, %fadd39424  store float %fsub42, ptr %getelementptr30, align 4425  store float %fsub43, ptr %getelementptr32, align 4426  %load44 = load ptr, ptr %getelementptr, align 8427  %load45 = load float, ptr %load44, align 4428  %getelementptr46 = getelementptr inbounds i8, ptr %load44, i64 4429  %load47 = load float, ptr %getelementptr46, align 4430  %fmul48 = fmul fast float %load45, %fadd40431  %fmul49 = fmul fast float %load47, %fadd41432  %fmul50 = fmul fast float %load45, %fadd41433  %fmul51 = fmul fast float %load47, %fadd40434  %fsub52 = fsub fast float %fmul48, %fmul49435  %fadd53 = fadd fast float %fmul51, %fmul50436  %fadd54 = fadd fast float %fsub52, %fadd18437  %fadd55 = fadd fast float %fadd53, %fadd19438  store float %fadd54, ptr %getelementptr7, align 4439  store float %fadd55, ptr %getelementptr9, align 4440  %fsub56 = fsub fast float %fadd18, %fsub52441  %fsub57 = fsub fast float %fadd19, %fadd53442  store float %fsub56, ptr %getelementptr26, align 4443  store float %fsub57, ptr %getelementptr28, align 4444  %load58 = load ptr, ptr %getelementptr, align 8445  %getelementptr59 = getelementptr inbounds %struct.widget, ptr %load58, i64 %shl446  %load60 = load float, ptr %getelementptr59, align 4447  %getelementptr61 = getelementptr inbounds i8, ptr %getelementptr59, i64 4448  %load62 = load float, ptr %getelementptr61, align 4449  %fmul63 = fmul fast float %load60, %fsub42450  %fmul64 = fmul fast float %load62, %fsub43451  %fmul65 = fmul fast float %load60, %fsub43452  %fmul66 = fmul fast float %load62, %fsub42453  %fsub67 = fsub fast float %fmul63, %fmul64454  %fadd68 = fadd fast float %fmul66, %fmul65455  %fadd69 = fadd fast float %fsub67, %fsub20456  %fadd70 = fadd fast float %fadd68, %fsub21457  store float %fadd69, ptr %getelementptr11, align 4458  store float %fadd70, ptr %getelementptr13, align 4459  %fsub71 = fsub fast float %fsub20, %fsub67460  %fsub72 = fsub fast float %fsub21, %fadd68461  store float %fsub71, ptr %getelementptr30, align 4462  store float %fsub72, ptr %getelementptr32, align 4463  %load73 = load ptr, ptr %getelementptr, align 8464  %load74 = load float, ptr %load73, align 4465  %getelementptr75 = getelementptr inbounds i8, ptr %load73, i64 4466  %load76 = load float, ptr %getelementptr75, align 4467  %getelementptr77 = getelementptr i8, ptr %getelementptr7, i64 32468  %load78 = load float, ptr %getelementptr77, align 4469  %getelementptr79 = getelementptr i8, ptr %getelementptr7, i64 36470  %load80 = load float, ptr %getelementptr79, align 4471  %getelementptr81 = getelementptr i8, ptr %getelementptr7, i64 40472  %load82 = load float, ptr %getelementptr81, align 4473  %getelementptr83 = getelementptr i8, ptr %getelementptr7, i64 44474  %load84 = load float, ptr %getelementptr83, align 4475  %fmul85 = fmul fast float %load82, %load74476  %fmul86 = fmul fast float %load84, %load76477  %fmul87 = fmul fast float %load84, %load74478  %fmul88 = fmul fast float %load82, %load76479  %fsub89 = fsub fast float %fmul85, %fmul86480  %fadd90 = fadd fast float %fmul87, %fmul88481  %fadd91 = fadd fast float %fsub89, %load78482  %fadd92 = fadd fast float %fadd90, %load80483  store float %fadd91, ptr %getelementptr77, align 4484  store float %fadd92, ptr %getelementptr79, align 4485  %fsub93 = fsub fast float %load78, %fsub89486  %fsub94 = fsub fast float %load80, %fadd90487  store float %fsub93, ptr %getelementptr81, align 4488  store float %fsub94, ptr %getelementptr83, align 4489  %load95 = load ptr, ptr %getelementptr, align 8490  %load96 = load float, ptr %load95, align 4491  %getelementptr97 = getelementptr inbounds i8, ptr %load95, i64 4492  %load98 = load float, ptr %getelementptr97, align 4493  %getelementptr99 = getelementptr i8, ptr %getelementptr7, i64 48494  %load100 = load float, ptr %getelementptr99, align 4495  %getelementptr101 = getelementptr i8, ptr %getelementptr7, i64 52496  %load102 = load float, ptr %getelementptr101, align 4497  %getelementptr103 = getelementptr i8, ptr %getelementptr7, i64 56498  %load104 = load float, ptr %getelementptr103, align 4499  %getelementptr105 = getelementptr i8, ptr %getelementptr7, i64 60500  %load106 = load float, ptr %getelementptr105, align 4501  %fmul107 = fmul fast float %load104, %load96502  %fmul108 = fmul fast float %load106, %load98503  %fmul109 = fmul fast float %load106, %load96504  %fmul110 = fmul fast float %load104, %load98505  %fsub111 = fsub fast float %fmul107, %fmul108506  %fadd112 = fadd fast float %fmul109, %fmul110507  %fadd113 = fadd fast float %fsub111, %load100508  %fadd114 = fadd fast float %fadd112, %load102509  store float %fadd113, ptr %getelementptr99, align 4510  store float %fadd114, ptr %getelementptr101, align 4511  %fsub115 = fsub fast float %load100, %fsub111512  %fsub116 = fsub fast float %load102, %fadd112513  store float %fsub115, ptr %getelementptr103, align 4514  store float %fsub116, ptr %getelementptr105, align 4515  %load117 = load ptr, ptr %getelementptr, align 8516  %load118 = load float, ptr %load117, align 4517  %getelementptr119 = getelementptr inbounds i8, ptr %load117, i64 4518  %load120 = load float, ptr %getelementptr119, align 4519  %fmul121 = fmul fast float %load118, %fadd113520  %fmul122 = fmul fast float %load120, %fadd114521  %fmul123 = fmul fast float %load118, %fadd114522  %fmul124 = fmul fast float %load120, %fadd113523  %fsub125 = fsub fast float %fmul121, %fmul122524  %fadd126 = fadd fast float %fmul124, %fmul123525  %fadd127 = fadd fast float %fsub125, %fadd91526  %fadd128 = fadd fast float %fadd126, %fadd92527  store float %fadd127, ptr %getelementptr77, align 4528  store float %fadd128, ptr %getelementptr79, align 4529  %fsub129 = fsub fast float %fadd91, %fsub125530  %fsub130 = fsub fast float %fadd92, %fadd126531  store float %fsub129, ptr %getelementptr99, align 4532  store float %fsub130, ptr %getelementptr101, align 4533  %load131 = load ptr, ptr %getelementptr, align 8534  %getelementptr132 = getelementptr inbounds %struct.widget, ptr %load131, i64 %shl535  %load133 = load float, ptr %getelementptr132, align 4536  %getelementptr134 = getelementptr inbounds i8, ptr %getelementptr132, i64 4537  %load135 = load float, ptr %getelementptr134, align 4538  %fmul136 = fmul fast float %load133, %fsub115539  %fmul137 = fmul fast float %load135, %fsub116540  %fmul138 = fmul fast float %load133, %fsub116541  %fmul139 = fmul fast float %load135, %fsub115542  %fsub140 = fsub fast float %fmul136, %fmul137543  %fadd141 = fadd fast float %fmul139, %fmul138544  %fadd142 = fadd fast float %fsub140, %fsub93545  %fadd143 = fadd fast float %fadd141, %fsub94546  store float %fadd142, ptr %getelementptr81, align 4547  store float %fadd143, ptr %getelementptr83, align 4548  %fsub144 = fsub fast float %fsub93, %fsub140549  %fsub145 = fsub fast float %fsub94, %fadd141550  store float %fsub144, ptr %getelementptr103, align 4551  store float %fsub145, ptr %getelementptr105, align 4552  %load146 = load ptr, ptr %getelementptr, align 8553  %load147 = load float, ptr %load146, align 4554  %getelementptr148 = getelementptr inbounds i8, ptr %load146, i64 4555  %load149 = load float, ptr %getelementptr148, align 4556  %load150 = load float, ptr %getelementptr7, align 4557  %load151 = load float, ptr %getelementptr9, align 4558  %fmul152 = fmul fast float %fadd127, %load147559  %fmul153 = fmul fast float %fadd128, %load149560  %fmul154 = fmul fast float %fadd128, %load147561  %fmul155 = fmul fast float %fadd127, %load149562  %fsub156 = fsub fast float %fmul152, %fmul153563  %fadd157 = fadd fast float %fmul154, %fmul155564  %fadd158 = fadd fast float %fsub156, %load150565  %fadd159 = fadd fast float %fadd157, %load151566  store float %fadd158, ptr %getelementptr7, align 4567  store float %fadd159, ptr %getelementptr9, align 4568  %fsub160 = fsub fast float %load150, %fsub156569  %fsub161 = fsub fast float %load151, %fadd157570  store float %fsub160, ptr %getelementptr77, align 4571  store float %fsub161, ptr %getelementptr79, align 4572  %shl162 = shl i64 %arg3, 32573  %ashr = ashr exact i64 %shl162, 32574  %load163 = load ptr, ptr %getelementptr, align 8575  %getelementptr164 = getelementptr inbounds %struct.widget, ptr %load163, i64 %ashr576  %load165 = load float, ptr %getelementptr164, align 4577  %getelementptr166 = getelementptr inbounds i8, ptr %getelementptr164, i64 4578  %load167 = load float, ptr %getelementptr166, align 4579  %load168 = load float, ptr %getelementptr11, align 4580  %getelementptr169 = getelementptr i8, ptr %getelementptr7, i64 12581  %load170 = load float, ptr %getelementptr169, align 4582  %getelementptr171 = getelementptr i8, ptr %getelementptr7, i64 40583  %getelementptr172 = getelementptr i8, ptr %getelementptr7, i64 44584  %fmul173 = fmul fast float %fadd142, %load165585  %fmul174 = fmul fast float %fadd143, %load167586  %fmul175 = fmul fast float %fadd143, %load165587  %fmul176 = fmul fast float %fadd142, %load167588  %fsub177 = fsub fast float %fmul173, %fmul174589  %fadd178 = fadd fast float %fmul175, %fmul176590  %fadd179 = fadd fast float %fsub177, %load168591  %fadd180 = fadd fast float %fadd178, %load170592  store float %fadd179, ptr %getelementptr11, align 4593  store float %fadd180, ptr %getelementptr169, align 4594  %fsub181 = fsub fast float %load168, %fsub177595  %fsub182 = fsub fast float %load170, %fadd178596  store float %fsub181, ptr %getelementptr171, align 4597  store float %fsub182, ptr %getelementptr172, align 4598  %shl183 = shl i64 %arg3, 33599  %ashr184 = ashr exact i64 %shl183, 32600  %load185 = load ptr, ptr %getelementptr, align 8601  %getelementptr186 = getelementptr inbounds %struct.widget, ptr %load185, i64 %ashr184602  %load187 = load float, ptr %getelementptr186, align 4603  %getelementptr188 = getelementptr inbounds i8, ptr %getelementptr186, i64 4604  %load189 = load float, ptr %getelementptr188, align 4605  %load190 = load float, ptr %getelementptr26, align 4606  %getelementptr191 = getelementptr i8, ptr %getelementptr7, i64 20607  %load192 = load float, ptr %getelementptr191, align 4608  %getelementptr193 = getelementptr i8, ptr %getelementptr7, i64 48609  %getelementptr194 = getelementptr i8, ptr %getelementptr7, i64 52610  %fmul195 = fmul fast float %fsub129, %load187611  %fmul196 = fmul fast float %fsub130, %load189612  %fmul197 = fmul fast float %fsub130, %load187613  %fmul198 = fmul fast float %fsub129, %load189614  %fsub199 = fsub fast float %fmul195, %fmul196615  %fadd200 = fadd fast float %fmul197, %fmul198616  %fadd201 = fadd fast float %fsub199, %load190617  %fadd202 = fadd fast float %fadd200, %load192618  store float %fadd201, ptr %getelementptr26, align 4619  store float %fadd202, ptr %getelementptr191, align 4620  %fsub203 = fsub fast float %load190, %fsub199621  %fsub204 = fsub fast float %load192, %fadd200622  store float %fsub203, ptr %getelementptr193, align 4623  store float %fsub204, ptr %getelementptr194, align 4624  %add = add i64 %ashr184, %arg3625  %shl205 = shl i64 %add, 32626  %ashr206 = ashr exact i64 %shl205, 32627  %load207 = load ptr, ptr %getelementptr, align 8628  %getelementptr208 = getelementptr inbounds %struct.widget, ptr %load207, i64 %ashr206629  %load209 = load float, ptr %getelementptr208, align 4630  %getelementptr210 = getelementptr inbounds i8, ptr %getelementptr208, i64 4631  %load211 = load float, ptr %getelementptr210, align 4632  %load212 = load float, ptr %getelementptr30, align 4633  %getelementptr213 = getelementptr i8, ptr %getelementptr7, i64 28634  %load214 = load float, ptr %getelementptr213, align 4635  %getelementptr215 = getelementptr i8, ptr %getelementptr7, i64 56636  %getelementptr216 = getelementptr i8, ptr %getelementptr7, i64 60637  %fmul217 = fmul fast float %fsub144, %load209638  %fmul218 = fmul fast float %fsub145, %load211639  %fmul219 = fmul fast float %fsub145, %load209640  %fmul220 = fmul fast float %fsub144, %load211641  %fsub221 = fsub fast float %fmul217, %fmul218642  %fadd222 = fadd fast float %fmul219, %fmul220643  %fadd223 = fadd fast float %fsub221, %load212644  %fadd224 = fadd fast float %fadd222, %load214645  store float %fadd223, ptr %getelementptr30, align 4646  store float %fadd224, ptr %getelementptr213, align 4647  %fsub225 = fsub fast float %load212, %fsub221648  %fsub226 = fsub fast float %load214, %fadd222649  store float %fsub225, ptr %getelementptr215, align 4650  store float %fsub226, ptr %getelementptr216, align 4651  ret void652}653